1. ホーム
  2. asp.net

[解決済み] IIS7 Response.StatusCodeの設定時にcustomErrorsを上書きしますか?

2022-12-19 01:29:11

質問

ここで奇妙な問題があります。誰もが知っているように、web.config の customErrors セクションを使用してカスタムエラーページを作成する場合は Response.StatusCode を適切なものに設定する必要があります。例えば、カスタム 404 ページを作成して 404.aspx と名づけたら、次のように <% Response.StatusCode = 404 %> を追加して、本当の 404 ステータスヘッダを持たせることができます。

ここまでついてきてくれましたか?よかったです。では、IIS7 でこれを実行してみてください。私はそれを動作させることができません、期間。もし Response.StatusCode がカスタムエラーページに設定されている場合、IIS7 はカスタムエラーページを完全に上書きして、独自のステータスページを表示するようです (設定されている場合)。

他にこの動作を見た人はいますか、また、それを回避する方法を知っていますか。IIS6 では動作していたので、なぜ変更されたのかわかりません。

注意: この問題は ASP.NET カスタム 404 で 404 Not Found の代わりに 200 OK が返される。

どのように解決するのですか?

system.webServer/httpErrorsセクションのexistingResponseをPassThroughに設定します。

  <system.webServer>
    <httpErrors existingResponse="PassThrough" />
  </system.webServer>

existingResponseプロパティのデフォルト値はAutoです。

Auto はカスタムエラーモジュールに を行うように指示します。で返される fTrySkipCustomErrors の値によって、 クライアントが見る実際のエラーテキストが影響を受けます。 IHttpResponse::GetStatus の呼び出しで返される fTrySkipCustomErrors の値に依存します。fTrySkipCustomErrorsがtrueに設定されている場合、カスタムエラーモジュールはレスポンスを通過させますが、falseに設定されている場合、カスタムエラーモジュールはテキストを独自のテキストに置き換えます。

詳細はこちら。 IIS7 カスタムエラーモジュールに期待すること