Не удается установить заголовок ответа HTTP в ASP.NET/IIS7 классический режим


Существует HttpModule, который изменяет поле сервера в заголовках ответов. Но это не работает в ASP.NET/IIS7 классический режим. каково решение для удаления или изменения поля сервера в заголовке reponse?

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 4

1 ответ:

Это невозможно сделать, если вы не используете хотя бы IIS7, интегрированный режим конвейера и .NET 3.0. В документации говорится следующее:

HttpResponse.Свойство Заголовков

Свойство Headers поддерживается только в интегрированном IIS 7.0 конвейерный режим и, по крайней мере, .NET Framework 3.0. Когда ты пытаешься ... доступ к свойству Headers и ни одно из этих двух условий не выполняется встречено, исключение PlatformNotSupportedException брошено.