現在、デバッグ情報を表示しないように web.config ファイルをセットアップしています。エラーが発生し、何か問題が発生すると、このページがユーザーに表示されます。
リクエストの処理中に申し訳ありませんが、エラーが発生しました。
これはデフォルトのエラー ページです。
サイトのどこかで問題が発生した場合、どうすればカスタム ビューにリダイレクトできますか?
現在、デバッグ情報を表示しないように web.config ファイルをセットアップしています。エラーが発生し、何か問題が発生すると、このページがユーザーに表示されます。
リクエストの処理中に申し訳ありませんが、エラーが発生しました。
これはデフォルトのエラー ページです。
サイトのどこかで問題が発生した場合、どうすればカスタム ビューにリダイレクトできますか?
エラー処理は面倒です。デフォルトのエラー ページを編集することは役に立ちますが、注意すべき点がいくつかあります。
基本的に、エラーには 2 種類あります。コードを使用して何らかの形で「キャッチ」できるマネージ コードのエラーです。2 つ目は、関連付けられたハンドラーが呼び出されなかったため、マネージ コードに到達しない IIS エラーがあります。たとえば、IIS は静的リソースが要求されたと想定するため、ルートをマップしない要求はコードを呼び出しません。
エラー処理をもう少し便利にするために、次の 3 つの手順をお勧めします。
リダイレクトしないでください!エラー時のリダイレクトは HTTP に違反します。代わりに、エラーが処理される場所に応じて、 または を使用するか、応答ストリームに直接書き込むことによってServer.Transfer
、ページをその場で返す必要があります。return View("...")
キーポイント: URL は変更しないでください。たとえば、http://www.google.com/asdf/asdfを参照してください。
HandleErrorAttribute
エラー処理 (およびロギング) ルーチンを継承して実装するグローバル フィルターを追加して登録します。HTML リクエストに対して HTML を返し、JSON リクエストに対して JSON を返すように、これをスマートにすることができます。
IIS の既定のエラー ハンドラーを削除して、すべてのエラーが同じ宛先に送信されるように構成します (これが必要な場合)。これにより、見苦しい IIS のデフォルト エラー ページが表示されなくなります。これは、IIS マネージャーまたは で行うことができますweb.config
。