Bonjour,
J'ai un composant d'upload de fichier, sous la forme d'un HTTPModule ASP.Net (je précise que je ne l'ai pas développé moi-même, c'est mon prédécesseur qui l'a fait et je ne l'ai plus sous la main ). Bref.
Sur le principe, ce module lit la requête HTTP, si c'est une requête de type multipart/form-data, il l'intercepte, extrait les fichiers du flux, les enregistre, et transmet de manière transparente les autres données de la requête. Sur le principe, tout marche bien.
Seulement voilà, au sortir du module, quand la page ASPX appelée reprend la main, la requête se trouve dans un état bizarre puisque certaines données ont été traitées et d'autres non. Par exemple, la propriété Request.InputStream n'est pas complète et entraîne un fort ralentissement si on tente d'y accéder (environ 30 secondes de battement, ce qui est très long).
Pour lire la requête dans le module, je commence par faire un worker.GetPreloadedEntityBody(); (où worker est le HttpWorkerRequest de la requête), puis s'il reste des données à lire (!worker.IsEntireEntityBodyIsPreloaded()), je boucle sur un worker.ReadEntityBody(bufferData, readLength). Pour mon traitement à moi aucun soucis.
Après quelques tests, il me semble que tout ce qui reste dans Request.InputStream après le passage dans mon module c'est ce qui a été "Preloaded", du coup, l'InputStream est incomplète et ASP.Net n'a pas l'air de s'en sortir...
Hum, je me rends compte que c'est absolument pas évident comme problème à expliquer par écrit ! Puis je sais pas trop quelles infos donner sans expliquer tout en détail et prendre 10 pages...
Donc, si jamais quelqu'un s'y connait un peu dans ce domaine et veut bien essayer de comprendre ce que je raconte, ce serait super sympa de sa part
J'ai vraiment du mal à trouver des informations sur des trucs aussi techniques et pointus...
Partager