共用方式為


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 應用程式層級的事件處理常式

  1. 如果您的網站還沒有 Global.asax 檔,請在網站的根目錄中建立一個。

  2. 建立名稱符合 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 應用程式生命週期概觀

其他資源

ASP.NET Web 網頁和應用程式中的錯誤處理