为了那些通过 google/bing 搜索登陆这里的人的利益:: 以下是步骤摘要:
第 1 步:创建一个派生自 IHttpModule 的类(以及 IDisposable 以在我们完成后清理):
public class MyCustomModule : IHttpModule, IDisposable
{
private HttpApplication _httpApplication
private static readonly List<string> HeadersToCloak = new List<string>
{
"Server",
"X-AspNet-Version",
"X-AspNetMvc-Version",
"X-Powered-By"
};
..
}
第 2 步:在 IHttpModule.Init 方法中获取对内部上下文的引用,并将事件处理程序分配给 PreSendRequestHeaders 事件:
public void Init(HttpApplication context)
{
_httpApplication = context;
context.PreSendRequestHeaders += OnPreSendRequestHeaders;
}
第 3 步:现在可以像这样删除标题:
private void OnPreSendRequestHeaders(object sender, EventArgs e)
{
if (null == _httpApplication)
{
return;
}
if (_httpApplication.Context != null)
{
var response = _httpApplication.Response;
HeadersToCloak.ForEach(header => response.Headers.Remove(header));
}
}
第 4 步:现在在 system.webserver 下的根 web.config 中注册此模块(如果运行 IIS 7.0 集成模式,请在此处查看更多详细信息):
<configuration>
<system.webServer>
<modules>
<add name="MyCustomModule" type="<namespace>.MyCustomModule "/>
</modules>
</system.webServer>
</configuration>
希望这可以帮助!