この質問は、ASP.NETリクエストのライフサイクル中に発生する例外を最も適切に処理する方法については、Handle URI hacking gracefully in ASP.NETに関連しています。私は、ほとんどの例外を正常に処理する方法を見つけましたが、いくつかの例外がリクエストの後半に発生し、エラープレゼンテーションロジック全体を独自のページにコンパイルするために、Server.Transfer
のようなものを実行する方法がないことがわかりました。ASP.NETリクエストのライフサイクル中に例外を処理する方法
代わりにApplication_Error
イベント内の例外を処理し、Response.Write
とそれ以外のものを実行する必要があります。それは醜いです。状況によっては、応答ストリームが既にフラッシュされている可能性があることを理解しているので、要求を転送することは実際の選択肢ではありません。私が尋ねたいのは、この問題に対する優雅な解決策を見つけた人がいるかどうかです。
また、リクエストを別のページに転送することで、例外を正常に処理できるかどうかわかりにくいです。例外ライフサイクルのどこで例外が発生したかを知る最良の方法は何ですか?ページのロードとレンダリング中に発生した場合は、Page_Error
で処理できますが、まだ問題が発生していません。Server.Transfer
しかし、例外が遅すぎるか遅すぎるとPage_Error
がキャッチしてApplication_Error
にバブルする場合は、それが早いか遅いかを知るにはどうすればよいですか?
ライフサイクルが遅れている場合は、Response.Write
をApplication_Error
から直接送信する必要がありますが、早ければServer.Transfer
を行うことができます。問題はServer.Transfer
を実行しようとすると、それがリクエストに含まれている場合にはそれ自体が例外を引き起こすことです。
だから、応答でクリエイティブなことをするのが遅すぎるかどうかを示すグローバルな列挙型などがありますか?
こんにちは、ありがとうと思います。 外部コンソールアプリケーションは、私が望むものを実際には助けてくれません(私はすでにかなりうまくいっています)。しかし、フレンドリーなエラーメッセージも表示します。 –
カスタムエラーページを使用していますか?これにより、任意のリクエストの結果に基づいてスローされる任意のHTTPステータスコードに基づいてカスタム情報を表示できますか? –
ASP.NETはすべてのリクエストをエラーページにリダイレクトします(たとえば、Server.Transferを実行する代わりに)、そのため使用できません。 –