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

Существует 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 Ответ

6 голосов
/ 11 августа 2011

Вы не можете сделать это, если у вас не установлен хотя бы IIS7, Integrated Pipeline Mode и .NET 3.0.В документации говорится следующее:

Свойство HttpResponse.Headers

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

...