Share via


방법: 사용자 지정 ASP.NET 상태 모니터링 이벤트 구현 및 발생

업데이트: 2007년 11월

이 단원의 예제에서는 ASP.NET 사용자 지정 상태 모니터링 이벤트를 발생시키는 방법을 보여 줍니다. 응용 프로그램에 사용자 지정 이벤트를 추가할 경우에는 다음과 같은 내용을 고려해야 합니다.

  • 상태 모니터링 이벤트의 범위를 설정하는 방법. 서버의 모든 응용 프로그램에서 발생시키려는 이벤트는 컴퓨터 차원의 범위를 갖도록 구성해야 합니다. 이 예제와 같이 사용자 지정 이벤트를 발생시키는 HTTP 모듈을 만드는 방법을 사용하는 것이 좋습니다. 그런 다음 컴퓨터 수준에서 모듈을 설치합니다. 이 모듈은 설치된 컴퓨터의 모든 응용 프로그램에서 호출됩니다.

  • 상태 모니터링 이벤트를 발생시키는 시기. 요청을 처리하는 동안 언제든지 상태 모니터링 이벤트를 발생시킬 수 있습니다. 일반적으로 사용자 지정 WebRequestEvent는 시스템 BeginRequest 이벤트 또는 EndRequest 이벤트에서 발생됩니다.

이 예제에서는 다음과 같은 기능을 보여 줍니다.

  • 사용자 지정 상태 모니터링 이벤트를 발생시키는 HTTP 모듈 빌드

  • 표준 EventLogWebEventProvider를 사용하여 이벤트를 기록하도록 응용 프로그램 구성

  • 표준 EventLogWebEventProvider를 사용하여 이벤트 정보 기록

이 예제를 실행하려면 다음과 같은 조건이 충족되어야 합니다.

HTTP 모듈을 빌드하려면

  • 사용자 지정 ASP.NET 상태 모니터링 이벤트 예제 발생의 소스 코드를 SampleModule.vb 또는 SampleModule.cs 파일로 ASP.NET 응용 프로그램의 App_Code 디렉터리에 저장합니다.

    참고:

    응용 프로그램의 App_Code 디렉터리에 소스 코드가 이미 있으면 디렉터리의 기존 코드와 동일한 언어로 작성된 사용자 지정 이벤트 공급자 버전을 추가해야 합니다.

    응용 프로그램의 페이지가 요청되면 ASP.NET에서 사용자 지정 이벤트 공급자 코드를 컴파일합니다. 자세한 내용은 ASP.NET 웹 사이트의 공유 코드 폴더를 참조하십시오.

    -또는-

  • 사용자 지정 이벤트 공급자를 라이브러리로 컴파일한 다음 이 라이브러리를 ASP.NET 응용 프로그램의 Bin 디렉터리에 추가하거나, 어셈블리에 강력한 이름을 지정하여 GAC(전역 어셈블리 캐시)에 추가합니다.

    다음 명령 예제에서는 명령줄 컴파일러를 사용하여 예제를 컴파일하는 방법을 보여 줍니다.

    vbc /out:<example_name>.dll /t:library <example_name>.vb /r:System.Web.dll /r:System.Configuration.dll /r:<required namespace>
    
    csc /out:<example_name>.dll /t:library <example_name>.cs /r:System.Web.dll /r:System.Configuration.dll  /r:<required namespace>
    
    참고:

    컴파일러 명령을 실행할 수 없는 경우에는 해당 명령을 실행하기 전에 Windows PATH 변수에 .NET Framework 설치 경로를 추가해야 합니다. Windows에서 내 컴퓨터를 마우스 오른쪽 단추로 클릭하고 속성, 고급 탭, 환경 변수 단추를 차례로 클릭합니다. 그런 다음 시스템 변수 목록에서 Path 변수를 두 번 클릭하고 변수 값 텍스트 상자에서 기존 값의 끝에 세미콜론(;)을 추가한 후 .NET Framework 설치 경로를 입력합니다. 일반적으로 .NET Framework는 Windows 설치 폴더의 \Microsoft.NET\Framework\versionNumber에 설치됩니다.

예제를 사용하도록 ASP.NET 응용 프로그램을 구성하려면

  1. ASP.NET 응용 프로그램의 루트 폴더에 Web.config 파일이 이미 있으면 이 파일을 엽니다. 그렇지 않으면 Web.config라는 텍스트 파일을 만든 후 다음 텍스트를 복사합니다.

    <?xml version="1.0"?>
    <configuration xmlns="https://schemas.microsoft.com/.NetConfiguration/v2.0">
      <system.web>
      </system.web>
    </configuration>
    
  2. system.web 태그 내에 다음과 같은 httpModules 요소와 healthMonitoring 요소(ASP.NET 설정 스키마) 요소를 추가합니다.

    <httpModules>
      <add name="Raising Custom Web Events" 
        type="Samples.AspNet.Management.CustomWebEvents" 
      />
    </httpModules>
    <healthMonitoring 
      heartbeatInterval="0" 
      enabled="true">
      <eventMappings>
        <add name="SampleWebRequestEvent" 
          type="Samples.AspNet.Management.SampleWebRequestEvent" 
        />
      </eventMappings>
      <profiles>
        <add name="Custom" 
          minInstances="1" 
          maxLimit="Infinite" 
          minInterval="00:00:00" 
        />
      </profiles>
      <rules>
        <clear />
          <add name="Custom Web Request Event" 
            eventName="SampleWebRequestEvent"
            provider="EventLogProvider" 
            profile="Custom" 
         />
      </rules>
    </healthMonitoring>
    

    type 특성에는 위의 코드 예제와 같이 클래스 이름만 나열하거나 다음 예제와 같이 정규화된 형식을 나열할 수 있습니다.

    type="Samples.AspNet.Management.SampleWebRequestEvent,
    Sample.SampleModule,Version=1.0.0.0,Culture=neutral, 
    PublicKeyToken=xxxxxxxxxxxx"
    
    참고:

    정규화된 형식은 클래스가 GAC 또는 Bin 디렉터리에 설치된 경우에만 필요합니다.

사용자 지정 웹 이벤트를 테스트하려면

  1. 웹 응용 프로그램이 실행되는 서버에서 Windows 이벤트 뷰어를 실행합니다. 시작, 실행을 차례로 클릭하고 실행 대화 상자에 eventvwr를 입력한 다음 확인을 클릭하면 됩니다.

  2. 이벤트 뷰어의 이벤트 로그 트리에서 응용 프로그램을 클릭합니다.

  3. 동작을 클릭한 다음 새로 고침을 클릭하여 응용 프로그램 로그의 뷰를 새로 고칩니다.

    가장 최근 이벤트의 날짜, 시간 및 이름을 기록해 둡니다. 나중에 사용자 지정 이벤트가 발생되었는지 확인할 때 이 정보가 사용됩니다.

  4. 브라우저에서 웹 응용 프로그램의 페이지를 요청합니다.

    응용 프로그램에서 사용자 지정 이벤트를 사용하려면 브라우저에서 응용 프로그램의 페이지를 실행합니다. 그런 다음 사용자 지정 이벤트를 통해 만들어진 결과를 검사할 수 있습니다.

  5. 응용 프로그램 로그를 다시 새로 고친 다음 사용자 지정 이벤트에 의해 발생한 상태 이벤트 정보가 기록되었는지 확인합니다.

참고 항목

작업

사용자 지정 ASP.NET 상태 모니터링 이벤트 예제 발생

개념

ASP.NET 상태 모니터링 개요

참조

healthMonitoring 요소(ASP.NET 설정 스키마)

EventLogWebEventProvider

기타 리소스

HTTP 모듈을 사용하여 ASP.NET 처리 확장