2010-10-07 13 views
5

我在IIS6服務器上運行ASP.NET。目前,服務器設置爲壓縮動態生成的內容,主要用於減少正在檢索的ASPX文件的頁面大小。ASP.NET/IIS6 - 使用動態壓縮內容時禁用分塊編碼?

一旦ASPX文件具有下面的代碼位,用來從數據庫中獲取文件並將其發送給用戶:

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

下載本身完美的作品。然而,下載文件的人沒有得到一個進度條,這是令人難以置信的煩人。

從我一直在做的研究看來,當壓縮動態內容時,IIS將傳輸編碼設置爲分塊時,會刪除內容長度標頭,因爲它違反了HTTP1.1標準。

在服務器級別關閉動態壓縮功能的最佳方式是什麼?有沒有辦法通過ASP.NET以編程方式關閉此響應的壓縮?有沒有更好的方式去做事?

+0

備註:當您提供的文件是Office 2007/2010文件時,您似乎需要提供Content-Length標頭。 http://stackoverflow.com/questions/5914675/content-length-header-ignored-by-iis-6。 – 2011-05-06 18:29:05

回答

2

您可以通過修改配置數據庫來打開/關閉站點或文件夾級別的壓縮。欲瞭解更多信息,請參閱:

Enabling HTTP Compression (IIS 6.0)

向下滾動到:「以便就個別站點和站點元素HTTP壓縮」

要做到這一點,你需要提升權限(管理員在最小)。

您可能必須將下載頁面放在它自己的文件夾中,並關閉該級別的壓縮,以免影響網站的其他部分。

我不得不承認我沒有嘗試過,但這是我第一次嘗試。

相關問題