方法 : ASP.NET アプリケーション レベルのイベント ハンドラを作成する
更新 : 2007 年 11 月
ASP.NET は、Application_event 形式 (Application_BeginRequest や Application_Error など) の名前付け規則を使用して、Global.asax ファイルのイベント ハンドラ メソッドにアプリケーションのイベントを自動的にバインドします。詳細については、「IIS 5.0 および 6.0 における ASP.NET アプリケーションのライフ サイクルの概要」を参照してください。
このコード例では、アプリケーション レベルの Error イベントを処理し、エラー情報をシステム イベント ログに書き込みます。Error イベントは、アプリケーション エラーまたは処理不能なページ エラーが発生すると常に発生します。
Asp.NET アプリケーション レベルのイベント ハンドラを作成するには
Web サイトにまだ Global.asax ファイルがない場合、サイトのルートにそれを作成します。
Application_event 形式に従った名前のイベント ハンドラ メソッドを作成します。たとえば、アプリケーションの Error イベントを処理するには、Object パラメータと EventArgs パラメータを受け取る Application_Error という名前のハンドラを作成します。
使用例
Global.asax ファイル内の Error イベント用のハンドラのコード例を次に示します。この例のハンドラは、アプリケーション内のいずれかの場所で処理できない例外が発生すると常に呼び出されます。try/catch ブロック内またはページ オブジェクトの Error イベントで例外が検出された場合、アプリケーションは Error エラーを発生させません
Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
' check to see if the ASPNETApplication log exists
If Not System.Diagnostics.EventLog. _
SourceExists("ASPNETApplication") Then
System.Diagnostics.EventLog. _
CreateEventSource("ASPNETApplication", "Application")
End If
System.Diagnostics.EventLog. _
WriteEntry("ASPNETApplication",
Server.GetLastError().Message)
End Sub
void Application_Error(Object sender, EventArgs e)
{
if(!System.Diagnostics.EventLog.SourceExists
("ASPNETApplication"))
{
System.Diagnostics.EventLog.CreateEventSource
("ASPNETApplication", "Application");
}
System.Diagnostics.EventLog.WriteEntry
("ASPNETApplication",
Server.GetLastError().Message);
}
このコードは、システム イベント ログにエントリを書き込みます。このコードは、最初に ASPNETApplication という名前のイベント ログ エントリが存在するかどうかを確認し、存在しない場合は作成します。このコードは、GetLastError メソッドを呼び出してエラーに関連付けられたエラー メッセージを取得し、そのエラー メッセージをログに書き込みます。
セキュリティ
このコード例では、アプリケーションがシステム イベント ログにアクセスするためのアクセス許可を持っている必要があります。システム イベント ログの使用方法の詳細については、「方法 : アプリケーション イベント ログに書き込む」を参照してください。
参照
概念
IIS 5.0 および 6.0 における ASP.NET アプリケーションのライフ サイクルの概要