次の変更により、カスタム HttpModule を作成せずに Azure でこれらの HTTP 応答ヘッダーを削除できます。
ネット上のほとんどの情報は古く、UrlScan (その後 IIS7 に統合されましたが、RemoveServerHeader=1
オプションは削除されています) が含まれています。以下は、私が見つけた最も優れたソリューションです(このブログ、この回答、およびこのブログを組み合わせたおかげです)。
Serverを削除するには、Global.asax に移動し、イベントを検索/作成して、以下を追加します ( BKとこのブログApplication_PreSendRequestHeaders
のおかげで、これは Cassini / local dev でも失敗しません)。
2014 年 4 月編集: PreSendRequestHeaders イベントと PreSendRequestContext イベントはネイティブ IIS モジュールで使用できますが、IHttpModule を実装するマネージ モジュールでは使用しないでください。これらのプロパティを設定すると、非同期リクエストで問題が発生する可能性があります。正しいバージョンは、BeginRequest イベントを使用することです。
protected void Application_BeginRequest(object sender, EventArgs e)
{
var application = sender as HttpApplication;
if (application != null && application.Context != null)
{
application.Context.Response.Headers.Remove("Server");
}
}
X-AspNet-Versionを削除するには、web.config で次を検索/作成<system.web>
して追加します。
<system.web>
<httpRuntime enableVersionHeader="false" />
...
X-AspNetMvc-Versionを削除するには、Global.asax に移動し、Application_Start
イベントを見つけて作成し、次のように行を追加します。
protected void Application_Start()
{
MvcHandler.DisableMvcResponseHeader = true;
}
X-Powered-Byを削除するには、web.config で次を検索/作成<system.webServer>
して追加します。
<system.webServer>
<httpProtocol>
<customHeaders>
<remove name="X-Powered-By" />
</customHeaders>
</httpProtocol>
...