Domanda

Ho un sito web semplice con due pagine. One visualizza un elenco di file, e altri flussi di un file quando viene cliccato nella lista. Tutto andava bene in produzione per 6 mesi, ma ora devo spostare il sito di Windows 2008 / IIS7. Ce l'ho per lo più di lavoro, ma i file non aprire correttamente (in Firefox) perché la mia intestazione del tipo di contenuto viene ignorato. Sul sito di produzione (IIS6) le intestazioni sono (utilizzando 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

, ma sul server di prova IIS7 ottengo:

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 riporta anche una violazione del protocollo e dice "Content-length non corrispondente:. Intestazione di risposta ha affermato 236841 byte, ma server ha inviato 238378 byte"

Il mio codice è simile al seguente:

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

Ho cercato di risolvere questo problema per un paio di giorni. Io non sono che la familiarità con IIS7 ed ho faticato a trovare dove modificare varie impostazioni. Sono riuscito a capire circa le due modalità pipeline gestite e corretti alcuni altri problemi con il passaggio a .NET classica AppPool (Integrated stava gettando ogni sorta di errori durante la trasmissione del file).

C'è qualche modo per dire IIS7 per non sovrascrivere la mia intestazione ContentType, se è questo che sta succedendo?

È stato utile?

Soluzione

Non ci sono HttpModules modifica la richiesta / risposta? Sono i file web.config esattamente la stessa cosa?

Dove sono questi byte in più 2K provenienti da? Cosa c'è in loro?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top