デスクトップのバックグラウンドから来て、標準の例外画面がユーザーに表示されないようにするために、キャッチした例外をエラーページに渡す方法が正確にはわかりません。
私の一般的な質問は、ページ X から ASP.net のエラー ページに例外を渡す方法です。
デスクトップのバックグラウンドから来て、標準の例外画面がユーザーに表示されないようにするために、キャッチした例外をエラーページに渡す方法が正確にはわかりません。
私の一般的な質問は、ページ X から ASP.net のエラー ページに例外を渡す方法です。
web.config の customErrors セクションを使用することをお勧めします。
<customErrors mode="RemoteOnly" defaultRedirect="/error.html">
<error statusCode="403" redirect="/accessdenied.html" />
<error statusCode="404" redirect="/pagenotfound.html" />
</customErrors>
そして、ELMAHを使用して、エラーを電子メールで送信したりログに記録したりします。
私が使用するパターンは、(log4net を使用して) try/catch ブロックにエラーを記録し、単純なエラー ページに response.redirect を実行することです。これは、エラーの詳細を表示する必要がないことを前提としています。
別のページで例外の詳細が必要な場合は、Server.GetLastError を参照してください。これを global.asax (Application_Error イベント内) で使用して、未処理の例外をログに記録し、エラー ページにリダイレクトします。
Global.asax Application_Error イベントで例外をキャプチャし、それらをセッションに保存して、エラー ページにリダイレクトすることができました。または、エラー メッセージをエンコードして、クエリ文字列でエラー ページに渡すこともできます。
から例外を取得することもできます
Server.GetLastError();
asp.net のカスタム エラー ページを使用します。web.config のcustomErrorセクションにあります。
Global.asax ファイルで例外をキャプチャし、それをセッションに保存します。ユーザーはエラー ページにリダイレクトされ、そこでセッション変数の例外を取得して、メッセージ情報をユーザーに表示します。
protected void Application_Error(object sender, EventArgs e)
{
Exception ex = Server.GetLastError();
this.Session[CacheProvider.ToCacheKey(CacheKeys.LastError)] = ex;
}
ユーザーに表示する前に、エラー メッセージをログに記録します。
global.asax -- Application_Exceptionハンドラーを使用して例外をキャッチし、それを保存してエラー ページに表示できると思います。
しかし実際には、別のエラーを引き起こす可能性のあるコードをエラー ページに含めるべきではありません。シンプルな「おっと! 何かがおかしくなった」ページのはずです。
エラーの詳細が必要な場合は、Windows のイベント ビューアーまたはELMAHを使用するか、何らかのログ メカニズムを使用してください。