2011-02-08 48 views
7

我試圖創建一個改變Response.Filter像這樣 (此演示只是設置過濾器回本身)一個的HttpModule:IIS 7.5 ASP.NET的HttpModule - 設置Response.Filter結果塊編碼

public class ContentTrafficMonitor : IHttpModule 
{ 
    public void Init(HttpApplication context) 
    { 
    context.BeginRequest += OnBeginRequest; 
    } 

    public void Dispose() 
    { 
    } 

    private static void OnBeginRequest(object sender, EventArgs e) 
    { 
    var application = (HttpApplication) sender; 
    application.Response.Filter = application.Response.Filter; 
    } 

}

否則設置響應的傳輸編碼分塊到,而不是使用Content-Length報頭。

如果我刪除設置了Response.Filter的行,則響應的標頭爲Content-Length。我們的應用程序取決於Content-Length標題,有什麼辦法可以防止這種行爲?

+0

我也有這個問題。有沒有人有任何解決辦法? – Mahyar 2015-01-14 09:36:02

回答

1

我的猜測是,設置過濾器會干擾輸出的正常緩衝,因此輸出現在被分塊。

也許你可以通過讓你的過濾器讀取直到結束來模仿行爲,即根據你讀的內容寫出所有讀出的內容,根據你所讀的內容設置內容長度標題的所有輸出&。

這只是一個猜測,雖然我害怕。

Simon