1

我正在使用带有 IIS6 的 VS 2008。我想从 Http 标头“服务器”中删除服务器标记。我在 Global.asax 中使用了以下代码。

void Application_PreSendRequestHeaders(object src, EventArgs e)
{
        HttpContext.Current.Response.Headers.Remove("Server");
}

它显示错误“对象引用未设置为对象的实例”。我该如何解决这个问题

4

2 回答 2

1

以下是对我有用的步骤(对于 IIS6):

  1. 在网络服务器上下载并安装UrlScan 2.5
  2. 打开 UrlScan 配置文件 (%windir%\system32\inetsrv\urlscan\urlscan.ini)
  3. 找到 RemoveServerHeader 行并将值设置为 1(应为 RemoveServerHeader=1)
  4. 重置 IIS 并测试标头是否消失

仅作记录......如果您升级到 IIS 7(集成管道模式),您可以使用自定义 HttpModule 的代码来实现这一点。

祝你好运!

于 2012-08-12T10:58:29.523 回答
-1

看看这里的答案:https ://stackoverflow.com/a/12804722/2074016 。它具有额外的错误处理,可以修复您的错误:

protected void Application_PreSendRequestHeaders(object sender, EventArgs e)
{
    // Remove the "Server" HTTP Header from response
    HttpApplication app = sender as HttpApplication;
    if (null != app && null != app.Request && !app.Request.IsLocal &&
        null != app.Context && null != app.Context.Response)
    {
        NameValueCollection headers = app.Context.Response.Headers;
        if (null != headers)
        {
            headers.Remove("Server");
        }
    }
}
于 2013-04-17T16:35:07.227 回答