.NET TIPS [ASP.NET AJAX]非同期通信時に発生した例外情報をロギングするには?[2.0、3.0、3.5、C#、VB]山田 祥寛2008/06/05 |
![]() |
「TIPS:[ASP.NET]アプリケーション内で発生したエラー情報をロギングするには?」で紹介したように、Global.asaxを利用することでアプリケーションで発生した例外情報をロギング(=ログ出力)することができる。
ただし、非同期ポストバックで発生した例外情報をロギングしようとした場合には注意が必要だ。というのも、「TIPS:[ASP.NET AJAX]非同期通信で発生した例外の処理方法を変更するには?」で紹介したように、ASP.NET AJAXでは非同期ポストバックで例外が発生した場合にも、AllowCustomErrorRedirectプロパティをFalseに設定することでカスタム・エラー・ページへのリダイレクトを抑制できるからだ。そして、この場合にはGlobal.asaxのApplication_Errorイベント・ハンドラは実行されないのである(そもそもカスタム・エラー・ページが設定されていない場合も同様)。非同期ポストバックで発生した例外情報を確実にロギングするには、ScriptManager.AsyncPostBackErrorイベントを利用する必要がある。
以下に、その具体的な例を示してみよう。以下は、「TIPS:[ASP.NET AJAX]非同期通信で発生した例外の処理方法を変更するには?」で紹介したCustomError.aspxに対して、AsyncPostBackErrorイベント・ハンドラを追加した例である。
|
||
非同期ポストバックで発生した例外情報をロギングするコード(上:CustomError.aspx.cs、下:CustomError.aspx.vb) |
非同期ポストバックで発生した例外情報は、AsyncPostBackErrorイベント・ハンドラの第2パラメータに渡されたAsyncPostBackErrorEventArgsオブジェクト(System.Web.UI名前空間)のExceptionプロパティを介して取得することが可能だ。
ここでは、取得したExceptionオブジェクトからエラーの発生元や例外メッセージ、エラー原因となったメソッドなどの情報を取り出し、これをログ・ファイルerror.logに記録しているというわけだ。
以上を理解したら、CustomError.aspxを実行し、[更新]ボタンをクリックしてみよう。アプリケーション・ルートの直下にerror.logファイルが作成され、以下のようなログ情報が記録されていれば成功である。
![]() |
AsyncPostBackErrorイベント・ハンドラによって記録されたログ |
ちなみに、Global.asaxのApplication_Errorイベント・ハンドラでもロギング処理を行っており、かつ、ページのAllowCustomErrorRedirectプロパティをTrueに設定している場合には、AsyncPostBackErrorイベント・ハンドラとApplication_Errorイベント・ハンドラの双方でロギングが行われてしまうので、要注意だ。AsyncPostBackErrorイベント・ハンドラで例外を処理している場合は、重ねて例外処理が行われないよう、AllowCustomErrorRedirectプロパティはFalseに設定するのが好ましい。
利用可能バージョン:.NET Framework 2.0 利用可能バージョン:.NET Framework 3.0 利用可能バージョン:.NET Framework 3.5 カテゴリ:Webフォーム 処理対象:ASP.NET AJAX 関連TIPS:[ASP.NET]アプリケーション内で発生したエラー情報をロギングするには? 関連TIPS:[ASP.NET AJAX]非同期通信で発生した例外の処理方法を変更するには? |
![]() |
「.NET TIPS」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
![]() |
|
|
|
![]() |