2012-12-12 13 views
5

こんにちは、私の質問に答えるために時間を割いてくれてありがとう。ASP.NET - 例外が発生したときに電子メールを送信

私は中規模企業の内部目的のために構築したasp.net webformsアプリケーションを持っています。

まず、CRUD操作中に発生する可能性があるすべての例外を処理し、ユーザーに適切なメッセージを表示するとします。しかし、一元的な方法で、innerExceptionメッセージをスタックトレースとともに自分自身にメールで送信してから、ユーザにメッセージを表示する方法がありますか?

つまり、私はEmailException()のようなメソッドを作成して、すべてのcatch(Exception ex)ブロックで呼び出すことをやめたいのですが、すべての例外が最初にキャッチされた場所を一度呼びたいと思います。

私の質問が十分明確でない場合は教えてください。

もう一度おねがいします!

+2

これはこの時点では汚れより古いですが、おそらくはまだ通用する出発点です。http://www.developer.com/net/asp/article.php/961301/Global-Exception-Handling-with-ASPNET .htm – Donnie

答えて

2

Elmahは、このために完全である:ほぼすべての未処理の例外の

  • ログ。
  • 記録された例外のログ全体をリモートで表示するWebページ。
  • カラースタックトレースを含む、ログに記録された例外の詳細をすべてリモートで表示するWebページ。 *多くの場合、customErrorsモードをオフにしても、特定の例外に対してASP.NETが生成した元の黄色い死亡画面を確認できます。
  • 発生時の各エラーの電子メール通知。
  • ログから最後の15個のエラーのRSSフィード。

ここには、config exampleがあります。

+0

はい私はelmahのページを探しています。ただし、これは処理されない例外のみを処理します。 CRUD操作で発生する例外を処理し、「新しいプロジェクトを追加する際に問題が発生しました。管理者にこの問題が通知されます」などのラベルmsgで印刷します。つまり、これらの例外を処理します。例外が処理されずに残っていて、elmahがログに記録した場合、ユーザーは何を表示しますか?死の黄色のスクリーン? – Dragan

+0

いいえ、あなたが正しくそれを行うなら、間違いなくYSODではありません。未処理のエラーバブルをグローバルエラーハンドラに渡します。これは、エラーの友好的な顔を提示し、エルマはまだアクションの一部を取得します。 –

+0

これで、elmahがログに記録した後で例外を処理する方法をさらに詳しく調べます。それが素晴らしいことを示すリンクがあれば。あなたの答えを受け入れていますか?非常にありがとう、非常にappreaciated。それが私が探していたものだった前にELMAHについて聞いたことはありません! – Dragan

3

Elmahは素晴らしいですが、Log4Netも、他のロギング機能とともにその機能を提供します。 log4net設定に追加する必要があるのは、SmtpAppenderの定義だけでなく、あなたが望む/必要なアペンダーを追加するだけです。

シンプルで簡単です。未処理の例外をキャッチする最も簡単な方法は、global.asaxApplication_Error()メソッドを追加することです。それはAsp.Netランタイムによって呼び出され、リクエストを処理している間

すべての未処理のASP.NETエラーをキャッチします - つまり、try/catchブロックでかでキャッチされていない すべてのエラーページレベル エラーハンドラ。

Elmah、log4net、およびglobal.asax Application_Error()の方法がすべて幸いに共存することに注意してください。 Elmahはただそこに座って、sotto voceを受け取り、通過するすべての例外をログに記録します。

+0

+1。 Log4Netは最高です。 (近年活動が少ないため避けてはいけません) –

+0

基本的にelmahやlog4netを統合して設定ファイルを設定し、次にapplication_error()で私は基本的にユーザーをエラーページにリダイレクトし、このエラーはログに記録され、管理者に通知されましたか? – Dragan

+0

@Dragan yep、これはそれを行う一般的な方法です –

関連する問題