* ASP.NET 開発メモ [#dec2bd3b] ** ASP.NET で 例外を検出する方法 [#e43308f8] Global.aspx に、エラー発生時のハンドラを記述すれば良い。 <%@ Import Namespace="System.IO" %> <script Language="C#" runat="Server"> void Application_OnError(Object sender, EventArgs e) { // ここでログに書くなどする。 Exception err = Server.GetLastError().InnerException; logger.Error( "エラーだよん。", err ); } </script> スクリプトではなく、コードに書く場合は、 <%@ Application Codebehind="Global.asax.cs" Inherits="Sample.Global"%> として、Global.asax.cs に using System; using System.Diagnostics; namespace Sample { public class Global : System.Web.HttpApplication { public Global() { InitializeComponent(); } protected void Application_Error(Object sender, EventArgs e) { // ここでログに書くなどする。 Exception err = Server.GetLastError().GetBaseException(); logger.Error( "エラーだよん。", err ); } } } などと書く。 Global.asax は、ASP.NET のルートに置く。 ※ちなみに、上の logger は [[log4net]] なんか使えるかと。 コードでは次のイベントも拾うことができる。 |BGCOLOR(#CCFFCC):イベントハンドラ|BGCOLOR(#CCFFCC):タイミング| |Application_Start|アプリケーションの初回起動時。| |Application_End|アプリケーションが破棄された時。| |Session_Start|ユーザーセッションの初回起動時。| |Session_End|ユーザーセッションの終了時。| |Application_BeginRequest|GETやPOSTなどのリクエスト発生時。| |Application_EndRequest|GETやPOSTなどのリクエスト終了時。| |Application_Disposed|CLRがASP.NETアプリケーションを最終的にメモリから破棄するタイミング。| |Application_Error|アプリケーション内で処理されない例外が発生した時。| *** 参考 [#l8572906] - [[[ASP.NET]アプリケーション内で発生したエラー情報をロギングするには?:http://www.atmarkit.co.jp/fdotnet/dotnettips/168asperrlog/asperrlog.html]] ----- [[プログラム・開発系メモ]]