Visual C# .NET을 사용하여 ASP.NET HTTP 모듈을 만드는 방법

기술 자료 번역 기술 자료 번역
기술 자료: 307996 - 이 문서가 적용되는 제품 보기.
이 문서는 이전에 다음 ID로 출판되었음: KR307996
모두 확대 | 모두 축소

이 페이지에서

이 문서에서는 Visual C# .NET을 사용하여 간단한 사용자 지정 HTTP 모듈을 만드는 방법을 단계별로 보여줍니다. 또한 모듈을 만들고 구축 및 구성하는 방법은 물론 Global.asax 파일에서 모듈의 이벤트를 연결하는 방법도 보여줍니다.

추가 정보

모듈 구현

  1. MyModule이라는 새 Visual Studio .NET C# 클래스 라이브러리 프로젝트를 만듭니다.
  2. 참조를 System.Web.dll 어셈블리로 설정합니다.
  3. 클래스에 다음 지시문을 추가합니다.
    using System.Web;					
  4. SyncModule.cs 클래스의 이름을 바꾼 다음 새 이름을 반영하도록 클래스 정의를 변경합니다.
  5. IHttpModule 인터페이스를 구현합니다. 클래스 정의는 다음과 같이 나타나야 합니다.
    public class SyncModule : IHttpModule					
  6. 어떤 이벤트를 등록할 것인지 결정합니다. 다음은 사용자가 등록할 수 있는 HttpApplication 개체에서 사용할 수 있는 이벤트에 대한 설명입니다.
    • AcquireRequestState: 모듈이 요청 상태(예: 세션)를 얻거나 만들 수 있도록 하려면 이 이벤트를 호출합니다.
    • AuthenticateRequest: 보안 모듈이 요청을 처리하기 전에 사용자를 인증해야 할 경우 이 이벤트를 호출합니다.
    • AuthorizeRequest: 보안 모듈이 요청을 인증해야 할 경우 이 이벤트를 호출합니다. 인증 후에 호출됩니다.
    • BeginRequest: 새로운 요청이 시작됨을 모듈에 알리려면 이 이벤트를 호출합니다.
    • Disposed: 어떤 이유로 응용 프로그램이 종료됨을 모듈에 알리려면 이 이벤트를 호출합니다. 모듈이 내부 정리를 수행할 수 있습니다.
    • EndRequest: 요청이 종료됨을 모듈에 알리려면 이 이벤트를 호출합니다.
    • Error: 요청을 처리하는 동안 발생한 오류를 모듈에 알리려면 이 이벤트를 호출합니다.
    • PostRequestHandlerExecute: 처리기가 요청 처리를 마쳤음을 모듈에 알리려면 이 이벤트를 호출합니다.
    • PreRequestHandlerExecute: 요청 처리기가 호출됨을 모듈에 알리려면 이 이벤트를 호출합니다.
    • PreSendRequestContent: 콘텐츠를 클라이언트에 보냄을 모듈에 알리려면 이 이벤트를 호출합니다.
    • PreSendRequestHeaders: HTTP 헤더를 클라이언트에 보냄을 모듈에 알리려면 이 이벤트를 호출합니다.
    • ReleaseRequestState: 처리기가 요청 처리를 마쳤기 때문에 모듈이 상태를 해제할 수 있도록 하려면 이 이벤트를 호출합니다.
    • ResolveRequestCache: 인증 후에 이 이벤트를 호출합니다. 캐싱 모듈은 캐시가 요청을 처리해야 하는지, 처리기가 요청을 처리해야 하는지 확인하기 위해 이 이벤트를 사용합니다.
    • UpdateRequestCache: 처리기에서 응답한 후에 이 이벤트를 호출합니다. 캐싱 모듈은 응답을 사용하여 캐시를 업데이트해야 합니다.
    이 예제에서는 BeginRequest 이벤트를 사용합니다.
  7. 다음과 같이 IHttpModule 인터페이스의 InitDispose 메서드를 구현합니다.
    public void Init(HttpApplication app)
    {
       app.BeginRequest += new EventHandler(OnBeginRequest);
    }
    
    public void Dispose(){ }					
  8. 다음과 같이 이벤트 위임을 만듭니다.
    public delegate void MyEventHandler(Object s, EventArgs e);					
  9. 다음과 같이 MyEventHandler 형식의 개인 로컬 변수를 정의하여 이벤트에 참조를 저장합니다.
    private MyEventHandler _eventHandler = null;					
  10. 다음과 같이 HttpApplication 개체에서 상속하는 Global.asax 파일이나 클래스에 있는 메서드에 위임을 연결하는 이벤트를 만듭니다.
    public event MyEventHandler MyEvent
    {
       add { _eventHandler += value; }
       remove { _eventHandler -= value; }
    }					
  11. 다음과 같이 HttpApplicationBeginRequest 이벤트에 연결하는 OnBeginRequest 메서드를 만듭니다.
    public void OnBeginRequest(Object s, EventArgs e)
    {
       HttpApplication app = s as HttpApplication;
       app.Context.Response.Write("Hello from OnBeginRequest in custom module.<br>");
       if(_eventHandler!=null)
          _eventHandler(this, null);
    }					
  12. 프로젝트를 컴파일합니다.

모듈 구축

  1. C:\Inetpub\Wwwroot 아래에 Module이라는 디렉터리를 새로 만듭니다.
  2. 새로 만든 Module 디렉터리에 Bin이라는 하위 디렉터리를 만듭니다. 경로는 C:\Inetpub\Wwwroot\Module\Bin입니다.
  3. MyModule.dll을 프로젝트의 Bin\Debug 디렉터리에서 C:\Inetpub\Wwwroot\Module\Bin 디렉터리로 복사합니다.
  4. 다음 절차에 따라 새 Module 디렉터리를 웹 응용 프로그램으로 표시합니다.
    1. 인터넷 서비스 관리자를 엽니다.
    2. Module 디렉터리를 마우스 오른쪽 단추로 누른 다음 속성을 누릅니다.
    3. 디렉터리 탭에서 만들기를 누릅니다.
    4. 확인을 눌러 모듈 속성 대화 상자를 닫습니다.

시스템 구성

  1. C:\Inetpub\Wwwroot\Module\ 디렉터리에서 Web.config 파일을 새로 만듭니다.
  2. Web.config에 다음 텍스트를 붙여 넣습니다.
    <configuration>
       <system.web>
          <httpModules>
             <add name="MyModule" type="MyModule.SyncModule, MyModule" />
          </httpModules>
       </system.web>
    </configuration>					

모듈 테스트

  1. C:\Inetpub\Wwwroot\Module 디렉터리에서 Test.aspx 파일을 새로 만듭니다.
  2. Test.aspx에 다음 텍스트를 붙여 넣습니다.
    <%@Page Language="C#"%>
    <% Response.Write("Hello from Test.aspx.<br>"); %>					
  3. C:\Inetpub\Wwwroot\Module 디렉터리에서 Global.asax 파일을 만듭니다.
  4. Global.asax에 다음 코드를 붙여 넣습니다.
    <%@ Import Namespace="MyModule" %>
    
    <script language="C#" runat=server >
    protected void MyModule_OnMyEvent(Object src, EventArgs e)
    {	
      Context.Response.Write("Hello from MyModule_OnMyEvent called in Global.asax.<br>");
    }
    </script>					
  5. Test.aspx 페이지를 요청합니다. 다음 텍스트가 나타나야 합니다.
    Hello from OnBeginRequest in custom module.
    Hello from MyModule_OnMyEvent called in Global.asax.
    Hello from Test.aspx.					

참조

HTTP 처리기에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
307985 INFO: ASP.NET HTTP 모듈 및 HTTP 처리기 개요





Microsoft 제품 관련 기술 전문가들과 온라인으로 정보를 교환하시려면 Microsoft 뉴스 그룹에 참여하시기 바랍니다.

속성

기술 자료: 307996 - 마지막 검토: 2006년 2월 17일 금요일 - 수정: 3.5
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft ASP.NET 1.1
  • Microsoft ASP.NET 1.0
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
키워드:?
kbconfig kbhowtomaster kbhttpmodule kbhttpruntime kbweb KB307996

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com