Frage

habe ich eine einfache Website mit zwei Seiten. Eine zeigt eine Liste der Dateien und die anderen Ströme eine Datei, wenn sie in der Liste angeklickt wird. Alles war in Ordnung für 6 Monate in der Produktion, aber jetzt muß ich die Website zu Windows 2008 / IIS7 bewegen. Ich habe es meistens funktioniert, aber die Dateien öffnen nicht richtig (in Firefox), weil mein Content-Type-Header ignoriert wird. Auf der Produktionsstätte (IIS6) die Header werden (unter Verwendung von 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

aber auf dem Test IIS7-Server erhalte ich:

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 berichtet auch eine Protokollverletzung und sagt: "Content-length Konflikt:. -Antwortheaders 236.841 Bytes beansprucht, aber Server gesendet 238.378 Bytes"

Mein Code sieht wie folgt aus:

            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();

Ich habe versucht, diese für ein paar Tage zu beheben. Ich bin nicht so vertraut mit IIS7 und habe zu finden gekämpft, wo verschiedene Einstellungen zu ändern. Ich habe es geschafft, über die beiden Managed Pipeline-Modi, um herauszufinden, und einige andere Probleme behoben von Classic .NET AppPool Schalt (Integrated wurde alle möglichen Fehler zu werfen, wenn die Datei zu übertragen).

Gibt es eine Möglichkeit IIS7 zu sagen, nicht die Contenttype-Header überschreiben, wenn das, was geschieht?

War es hilfreich?

Lösung

Sie haben keine Httpmodules Modifizieren der Request / Response? Sind die web.config-Dateien genau das gleiche?

Wo ist dieses zusätzliche 2K Bytes kommt aus? Was ist in ihnen?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top