2011-02-08 5 views
7

Я пытаюсь создать HttpModule, который изменяет Response.Filter как так (для этой демонстрации просто установить фильтр обратно к себе):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

ответ

1

Мое предположение заключается в том, что установка фильтра препятствует нормальной буферизации выходного сигнала, следовательно, выход теперь разделяется.

Возможно, вы могли бы имитировать поведение, считая свой фильтр до конца, т. Е. Получить весь вывод &, чтобы задать заголовок длины содержимого на основе того, что вы прочитали, прежде чем писать все считанные.

Это только предположение, хотя я боюсь.

Simon

 Смежные вопросы

  • Нет связанных вопросов^_^