无法在ASP.NET / IIS7经典模式下设置HTTP响应标头

时间:2011-08-11 11:14:01

标签: asp.net iis-7 httpmodule

有一个HttpModule可以更改响应标头中的服务器字段。但它在ASP.NET / IIS7经典模式下不起作用。在响应标题中删除或更改服务器字段的解决方案是什么?

public class CloakHttpHeaderModule : IHttpModule
{
    public void Init(HttpApplication app)
    {
        app.PreSendRequestHeaders += new EventHandler(context_PreSendRequestHeaders);
    }

    public void Dispose()
    {
    }

    private void context_PreSendRequestHeaders(object sender, EventArgs e)
    {
        var context = ((HttpApplication)sender).Context;
        context.Response.Headers.Set("Server", "Apache 2.0");
        //HttpContext.Current.Response.Headers.Set("Server", "WSGIServer/0.1 Python/2.6.1");
    }

}

1 个答案:

答案 0 :(得分:6)

除非您至少运行IIS7,集成管道模式和.NET 3.0,否则无法执行此操作。文档说明了这一点:

  

HttpResponse.Headers Property

     

只有集成了IIS 7.0才支持Headers属性   管道模式和至少.NET Framework 3.0。当你尝试   访问Headers属性,这两个条件之一不是   遇到了,抛出了PlatformNotSupportedException。