Question

J'ai un site web simple avec deux pages. Une affiche la liste des fichiers, et les autres flux d'un fichier quand il est cliqué dans la liste. Tout était bien dans la production pendant 6 mois, mais maintenant je dois déplacer le site vers Windows 2008 / IIS7. Je l'ai surtout travailler, mais les fichiers ne pas ouvrir correctement (dans Firefox) parce que mon en-tête de type de contenu est ignoré. Sur le site de production (IIS6) les en-têtes sont (en utilisant Fiddler):

HTTP/1.1 200 OK
Date: Tue, 09 Feb 2010 16:00:51 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Content-Disposition: attachment; filename="myfile__foo.pdf"
Content-Length: 236841
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: -1
Content-Type: application/octet-stream

mais sur le serveur de test IIS7 je reçois:

HTTP/1.1 200 OK
Cache-Control: private
Content-Length: 236841
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/7.5
X-AspNet-Version: 2.0.50727
Content-Disposition: attachment; filename="myfile__foo.pdf"

Fiddler signale également une violation du protocole et dit « non-concordance de contenu longueur:. Réponse en-tête réclamé 236841 octets, mais le serveur a envoyé 238378 octets »

Mon code ressemble à ceci:

            Response.Clear();
            Response.AddHeader("Content-Disposition", "attachment; filename=\"" + doc.DisplayFilename + "." + doc.FileExtension + "\"");
            Response.AddHeader("Content-Length", file.Length.ToString());
            Response.ContentType = "application/octet-stream";
            Response.TransmitFile(file.FullName);
            Response.End();

J'ai essayé de résoudre ce problème pendant deux ou trois jours. Je ne suis pas familier avec IIS7 et ont eu du mal à trouver où changer différents paramètres. J'ai réussi à comprendre au sujet des deux modes de pipeline géré et fixé d'autres problèmes en passant à .NET classique AppPool (vomissait intégré toutes sortes d'erreurs lors de la transmission du fichier).

Est-il possible de dire IIS7 pour ne pas écraser mon en-tête ContentType, si c'est ce qui se passe?

Était-ce utile?

La solution

Vous n'avez pas HttpModules modifier la demande / réponse? Les fichiers web.config exactement la même chose?

Où sont ces octets supplémentaires 2K viennent? Ce qui est en eux?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top