IIS 7.5 ASP.NET HttpModule - 设置Response.Filter会导致分块编码

时间:2011-02-08 20:49:38

标签: asp.net iis iis-7 httpmodule content-length

我正在尝试创建一个像这样更改Response.Filter的HttpModule (对于此演示,只需将过滤器设置回自身):

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 个答案:

答案 0 :(得分:1)

我的猜测是,设置过滤器会干扰输出的正常缓冲,因此输出现在被分块。

也许你可以通过让你的过滤器读到最后来模仿这种行为,即得到所有的输出和放大器。在您编写所有内容之前,根据您已阅读的内容设置内容长度标题。

虽然我害怕但这只是一个猜测。

西蒙