4

デスクトップのバックグラウンドから来て、標準の例外画面がユーザーに表示されないようにするために、キャッチした例外をエラーページに渡す方法が正確にはわかりません。

私の一般的な質問は、ページ X から ASP.net のエラー ページに例外を渡す方法です。

4

7 に答える 7

6

web.config の customErrors セクションを使用することをお勧めします。

   <customErrors mode="RemoteOnly" defaultRedirect="/error.html">
      <error statusCode="403" redirect="/accessdenied.html" />
      <error statusCode="404" redirect="/pagenotfound.html" />
   </customErrors>

そして、ELMAHを使用して、エラーを電子メールで送信したりログに記録したりします。

于 2008-09-24T19:47:50.043 に答える
2

私が使用するパターンは、(log4net を使用して) try/catch ブロックにエラーを記録し、単純なエラー ページに response.redirect を実行することです。これは、エラーの詳細を表示する必要がないことを前提としています。

別のページで例外の詳細が必要な場合は、Server.GetLastError を参照してください。これを global.asax (Application_Error イベント内) で使用して、未処理の例外をログに記録し、エラー ページにリダイレクトします。

于 2008-09-24T19:49:53.437 に答える
2

Global.asax Application_Error イベントで例外をキャプチャし、それらをセッションに保存して、エラー ページにリダイレクトすることができました。または、エラー メッセージをエンコードして、クエリ文字列でエラー ページに渡すこともできます。

于 2008-09-24T19:50:18.633 に答える
2

から例外を取得することもできます

Server.GetLastError();
于 2008-09-24T19:50:47.507 に答える
1

asp.net のカスタム エラー ページを使用します。web.config のcustomErrorセクションにあります。

于 2008-09-24T19:47:57.623 に答える
1

Global.asax ファイルで例外をキャプチャし、それをセッションに保存します。ユーザーはエラー ページにリダイレクトされ、そこでセッション変数の例外を取得して、メッセージ情報をユーザーに表示します。

    protected void Application_Error(object sender, EventArgs e)
    {
        Exception ex = Server.GetLastError();
        this.Session[CacheProvider.ToCacheKey(CacheKeys.LastError)] = ex;
    }

ユーザーに表示する前に、エラー メッセージをログに記録します。

于 2008-09-24T19:52:22.887 に答える
0

global.asax -- Application_Exceptionハンドラーを使用して例外をキャッチし、それを保存してエラー ページに表示できると思います。

しかし実際には、別のエラーを引き起こす可能性のあるコードをエラー ページに含めるべきではありません。シンプルな「おっと! 何かがおかしくなった」ページのはずです。

エラーの詳細が必要な場合は、Windows のイベント ビューアーまたはELMAHを使用するか、何らかのログ メカニズムを使用してください。

于 2008-09-24T19:46:10.483 に答える