IISが500または400の範囲のステータスコードを返すWebアプリの出力を自動的に上書きしないようにする方法はありますか?
例として、ColdFusionで次のページを作成できます。
<cfheader statuscode="500" statustext="Error">
Sorry, an error occurred.
「申し訳ありませんが、エラーが発生しました」というページが表示されるはずです。ヘッダーでステータスコードが500であることを確認します。
代わりに、私は見る:
Server Error
500 - Internal server error.
There is a problem with the resource you are looking for, and it cannot be displayed.
素敵なIISスタイリング。
500個のカスタムステータスページを削除しようとしましたが、結果は次のようになりました。
The page cannot be displayed because an internal server error has occurred.
素敵なスタイリングなし。
これは、200または300の範囲外のコードを返すページで発生するようです。
これは別の質問で回答されました: IIS7が私のColdfusionエラーページを乗っ取る
IISがエラーを無視して通過できるように、ソリューションが構成を変更しているようです。したがって、設定
<httpErrors existingResponse="PassThrough" />
したがって、解決策はIISの動作を変更することです。これは、既存のすべてのWebアプリケーションサーバーに動作の変更を要求するのは本当にばかげているためです。
別の同様の質問で更新された回答 を参照して、理由と方法この問題に対する実行可能な回答がないを確認してください。
Response.TrySkipIisCustomErrorsを使用してこれを行う方法があるようです。以下の例はaspxページからのものですが、使用例に適応できるはずです。
この次のWebコンテンツは、ここで複製するには広すぎます。
http://www.west-wind.com/weblog/posts/2009/Apr/29/IIS-7-Error-Pages-taking-over-500-Errors
間違いなく機能する方法は次のとおりです。1. Webサイトまたはアプリケーションのエラーページを開きます。2.右側のアクションで[機能設定の編集]をクリックします。3.詳細なエラーを選択して保存します。