2010-10-07 8 views
5

Używam programu ASP.NET na serwerze IIS6. Obecnie serwer jest skonfigurowany do kompresowania dynamicznie generowanych treści, głównie w celu zmniejszenia rozmiaru strony pobieranych plików ASPX.ASP.NET/IIS6 - Wyłącz kodowanie kodowane przy użyciu dynamicznie skompresowanej treści?

Po plików ASPX ma następujący fragment kodu, używany do pobierania pliku z bazą danych i wysłać go do użytkownika:

Response.Clear(); 
Response.Buffer = true; 
Response.ContentType = Document.MimeType; 
Response.AddHeader("content-disposition", "attachment;filename=\"" + Document.Filename + Document.Extension + "\""); 
Response.AddHeader("content-length", Document.FileSizeBytes.ToString()); 

byte[] docBinary = Document.GetBinary(); 
Response.BinaryWrite(docBinary); 

Samo pobieranie działa idealnie. Jednak osoba pobierająca plik nie otrzymuje paska postępu, co jest niezwykle denerwujące.

Z przeprowadzonych przeze mnie badań wynika, że ​​kiedy IIS ustawia kodowanie transferu na fragmenty podczas kompresji zawartości dynamicznej, co usuwa nagłówek długości treści, ponieważ narusza to standard HTTP1.1.

Jaki jest najlepszy sposób obejścia tego bez wyłączania kompresji dynamicznej na poziomie serwera? Czy istnieje sposób przez ASP.NET, aby programowo wyłączyć kompresję dla tej odpowiedzi? Czy istnieje lepszy sposób na robienie rzeczy?

+0

Nota boczna: wydaje się, że musisz podać nagłówek długości treści, gdy plik, który wyświetlasz, jest plikiem Office 2007/2010. http://stackoverflow.com/questions/5914675/content-length-header-ignored-by-is-6. –

Odpowiedz

2

Kompresję można włączyć/wyłączyć na poziomie witryny lub folderu, modyfikując metabazę. Aby uzyskać więcej informacji, patrz:

Enabling HTTP Compression (IIS 6.0)

Przewiń w dół do: "Aby włączyć kompresję HTTP dla witryn indywidualne i strony Elements"

Aby to zrobić trzeba podwyższonych uprawnień (administrator najmniej).

Być może trzeba będzie umieścić stronę pobierania w swoim własnym folderze i wyłączyć kompresję na tym poziomie, aby nie wpływać na inne części witryny.

Muszę przyznać, że tego nie próbowałem, ale najpierw spróbuję.

Powiązane problemy