IIS 7.5 ASP.NET HttpModule - настройка Response.Filter приводит к фрагментному кодированию - PullRequest
8 голосов
/ 08 февраля 2011

Я пытаюсь создать 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;
  }

}

Делаем такустанавливает кодирование ответа для chunked вместо использования заголовка Content-Length.

Если я удаляю строку, в которой установлена ​​Response.Filter, ответ имеет заголовок Content-Length.Наше приложение зависит от заголовка Content-Length, есть ли способ предотвратить такое поведение?

1 Ответ

1 голос
/ 24 февраля 2011

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

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

Боюсь, это всего лишь предположение.

Simon

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...