HOW TO:建立 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 應用程式層級的事件處理常式
如果您的網站還沒有 Global.asax 檔,請在網站的根目錄中建立一個。
建立名稱符合 Application_event 模式的事件處理常式方法。例如,若要處理應用程式 Error 事件,請建立名為 Application_Error 的處理常式,此處理常式接受 Object 參數和 EventArgs 參數。
範例
在下列程式碼中,示範了 Error 事件之 Global.asax 檔中的處理常式。每當應用程式中任何位置發生未處理的例外狀況 (Exception) 時,都會呼叫該範例中的處理常式。如果例外狀況在 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 方法取得與錯誤關聯的錯誤訊息,然後將錯誤訊息寫入記錄檔。
安全性
這個程式碼範例要求應用程式具有存取系統事件記錄檔的使用權限。如需使用系統事件記錄檔的詳細資訊,請參閱 HOW TO:寫入應用程式事件記錄檔。
請參閱
概念
IIS 5.0 和 6.0 的 ASP.NET 應用程式生命週期概觀