2011-02-08 12 views
7

Próbuję utworzyć HttpModule, który zmienia Response.Filter Podobnie jak (do tej demonstracji wystarczy ustawić filtr z powrotem do siebie):IIS 7.5 ASP.NET HttpModule - Ustawianie wyników Response.Filter w pakietowego kodowania

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

}

w ten sposób ustawia kodowanie przesyłania odpowiedzi do pakietowego, zamiast w nagłówku Content-Length.

Po usunięciu linii, w której ustawiono Response.Filter, odpowiedź ma nagłówek Content-Length. Nasza aplikacja zależy od nagłówka Content-Length, czy jest jakiś sposób, aby temu zapobiec?

+0

Mam również ten problem. czy ktoś ma jakieś rozwiązanie? – Mahyar

Odpowiedz

1

Domyślam się, że ustawienie filtru zakłóca normalne buforowanie wyjścia, stąd wyjście jest teraz porwane.

Może uda ci się naśladować zachowanie, czytając filtr do końca, tj. Pobierz wszystkie dane wyjściowe & ustaw nagłówek długości treści na podstawie tego, co przeczytałeś, zanim napiszesz wszystko, co przeczytałeś.

To tylko przypuszczenie, chociaż obawiam się.

Simon