다음을 통해 공유


방법: ASP.NET 응용 프로그램 수준 이벤트 처리기 만들기

업데이트: 2007년 11월

ASP.NET에서는 Application_BeginRequest 및 Application_Error 같은 Application_event의 명명 규칙을 사용하여 Global.asax 파일에서 자동으로 응용 프로그램 이벤트를 이벤트 처리기 메서드에 바인딩합니다. 자세한 내용은 IIS 5.0 및 6.0의 ASP.NET 응용 프로그램 수명 주기 개요를 참조하십시오.

이 코드 예제에서는 응용 프로그램 수준의 Error 이벤트를 처리하고 시스템 이벤트 로그에 오류 정보를 기록합니다. Error 이벤트는 응용 프로그램 오류 또는 처리되지 않은 페이지 오류가 나타날 때마다 발생합니다.

ASP.NET 응용 프로그램 수준 이벤트 처리기를 만들려면

  1. 웹 사이트에 Global.asax 파일이 없는 경우 사이트의 루트에 해당 파일을 만듭니다.

  2. Application_event 패턴의 이름을 사용하는 이벤트 처리기 메서드를 만듭니다. 예를 들어 응용 프로그램의 Error 이벤트를 처리하려면 ObjectEventArgs 매개 변수를 사용하고 이름이 Application_Error인 처리기를 만듭니다.

예제

다음 코드 예제에서는 Global.asax 파일의 Error 이벤트 처리기를 보여 줍니다. 응용 프로그램에서 처리되지 않은 예외가 발생할 때마다 이 예제의 처리기가 호출됩니다. try/catch 블록에서 또는 페이지 개체의 Error 이벤트를 통해 예외가 catch되면 응용 프로그램에서 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 응용 프로그램 수명 주기 개요

기타 리소스

ASP.NET 페이지 및 응용 프로그램의 오류 처리