연습: 동기 HTTP 처리기 만들기

업데이트: 2007년 11월

이 연습에서는 요청의 동기 처리를 수행하는 HTTP 처리기를 만드는 방법을 보여 줍니다. 예제 처리기에서는 URL이 .sample로 끝나는 ASP.NET 응용 프로그램의 리소스에 대한 요청을 처리합니다.

사용자가 URL이 .sample로 끝나는 리소스를 요청하면 웹 서버는 요청을 ASP.NET으로 전달합니다. 그러면 ASP.NET에서 HTTP 처리기를 호출하고, 처리기에서 응답을 반환합니다. 응답은 처리기에서 동적으로 만들어집니다. 파일 이름 확장명이 .sample인 파일이 필요 없습니다.

ASP.NET 런타임에서 IIS 6.0과 상호 작용하는 방법에 대한 자세한 내용은 IIS 5.0 및 6.0의 ASP.NET 응용 프로그램 수명 주기 개요를 참조하십시오. IIS 7.0과의 ASP.NET 통합에 대한 자세한 내용은 IIS 7.0의 ASP.NET 응용 프로그램 수명 주기 개요를 참조하십시오.

이 연습에서 수행할 작업은 다음과 같습니다.

  • HTTP 처리기 클래스의 코드를 만드는 방법. 이 클래스에서는 ProcessRequest 메서드와 IsReusable 속성을 구현해야 합니다.

  • Web.config 파일에서 처리기를 등록하고 .sample 파일 이름 확장명을 매핑하는 방법

  • IIS(인터넷 정보 서비스)에서 .sample 파일 이름 확장명을 ASP.NET에 매핑하는 방법

    참고:

    ASP.NET 개발 서버에서 새 처리기에 대한 참조를 포함하도록 구성 파일을 변경한 후 리소스에 대한 요청을 처리합니다. ASP.NET Development Server에 대한 자세한 내용은 Visual Web Developer의 웹 서버를 참조하십시오. IIS에서 요청을 처리하려면 이 연습의 뒷부분에 있는 절차를 참조하십시오.

사전 요구 사항

이 연습을 완료하려면 다음과 같은 요건을 갖추어야 합니다.

  • Visual Studio 또는 Visual Web Developer

  • IIS를 사용하여 실행할 수 있는 ASP.NET 웹 사이트

  • IIS 6.0 또는 IIS 7.0

동기 HTTP 처리기 클래스 만들기

사용자 지정 HelloWorldHandler HTTP 처리기 클래스를 만들려면

  1. 작업 중인 웹 사이트에 아직 App_Code 폴더가 없으면 사이트의 루트에 만듭니다.

  2. App_Code 디렉터리에서 HelloWorldHandler라는 클래스를 만들고 클래스 파일에 다음 코드를 추가합니다.

    Imports System.Web
    
    Public Class HelloWorldHandler
        Implements IHttpHandler
    
        Public Sub ProcessRequest(ByVal context As _
                System.Web.HttpContext) Implements _
                System.Web.IHttpHandler.ProcessRequest
            Dim request As HttpRequest = context.Request
            Dim response As HttpResponse = context.Response
            ' This handler is called whenever a file ending 
            ' in .sample is requested. A file with that extension
            ' does not need to exist.
            response.Write("<html>")
            response.Write("<body>")
            response.Write("<h1>Hello from a synchronous custom HTTP handler.</h1>")
            response.Write("</body>")
            response.Write("</html>")
        End Sub
    
        Public ReadOnly Property IsReusable() As Boolean _
                Implements System.Web.IHttpHandler.IsReusable
            Get
                Return False
            End Get
        End Property
    End Class
    
    using System.Web;
    public class HelloWorldHandler : IHttpHandler
    {
        public HelloWorldHandler()
        {
        }
        public void ProcessRequest(HttpContext context)
        {
            HttpRequest Request = context.Request;
            HttpResponse Response = context.Response;
            // This handler is called whenever a file ending 
            // in .sample is requested. A file with that extension
            // does not need to exist.
            Response.Write("<html>");
            Response.Write("<body>");
            Response.Write("<h1>Hello from a synchronous custom HTTP handler.</h1>");
            Response.Write("</body>");
            Response.Write("</html>");
        }
        public bool IsReusable
        {
            // To enable pooling, return true here.
            // This keeps the handler in memory.
            get { return false; }
        }
    }
    

    코드에서는 ProcessRequest 메서드를 구현하고 현재 HttpContext 개체의 Response 속성에 문자열을 씁니다.

IIS 6.0에서 사용자 지정 HTTP 처리기 등록

사용자 지정 HTTP 처리기 클래스를 만든 후에는 응용 프로그램의 Web.config 파일에 등록해야 합니다. 이렇게 하면 URL이 .sample로 끝나는 리소스에 대해 요청할 때 ASP.NET에서 처리기를 찾을 수 있습니다.

IIS 6.0과 IIS 7.0 중 어떤 것으로 작업하는지에 따라 처리기 등록 절차가 달라집니다. 이 단원에서는 IIS 6.0에서 처리기를 등록하는 방법을 설명합니다. 다음 단원에서는 IIS 7.0에서 처리기를 등록하는 방법을 설명합니다.

IIS 6.0에서 처리기를 등록하려면

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

  2. 아래에 강조 표시된 요소를 Web.config 파일에 추가합니다.

    <configuration>
      <system.web>
        <httpHandlers>      <add verb="*" path="*.sample"         type="HelloWorldHandler"/>    </httpHandlers>
      </system.web>
    </configuration>
    

    구성 요소는 사용자 지정 처리기를 클래스 이름별로 등록하고 .sample 파일 이름 확장명을 해당 처리기에 매핑합니다.

    IIS 관리자를 사용하여 .sample 파일 이름 확장명의 응용 프로그램 확장명 매핑을 등록합니다. 자세한 내용은 방법: IIS에서 HTTP 처리기 확장 구성을 참조하십시오.

IIS 7.0에서 사용자 지정 HTTP 처리기 등록

IIS 7.0에서 응용 프로그램은 기본 또는 통합 모드로 실행될 수 있습니다. 기본 모드에서는 요청이 IIS 6.0에서와 거의 같은 방법으로 처리됩니다. 통합 모드에서는 IIS 7.0이 요청, 모듈 및 기타 기능을 ASP.NET과 함께 공유할 수 있도록 하는 파이프라인을 사용하여 요청을 관리합니다.

IIS 7.0에서 처리기를 등록하려면 Web.config 파일 또는 IIS 관리자에 처리기를 등록해야 합니다. IIS 7.0을 중심으로 관리되기 때문에 응용 프로그램의 Web.config 파일에 대한 변경 사항이 응용 프로그램의 IIS 관리자 인터페이스에 반영되며 반대의 경우도 마찬가지입니다. 다음 절차를 통해 처리기를 Web.config 파일에 등록합니다.

기본 모드 또는 통합 모드로 실행 중인 IIS 7.0의 처리기를 등록할 때 각각 절차가 다릅니다. 사용 중인 IIS 모드의 절차를 따르십시오.

기본 모드로 실행되는 IIS 7.0에서 처리기를 등록하려면

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

  2. 아래에 강조 표시된 요소를 Web.config 파일에 추가합니다.

    참고:

    aspnet_isapi.dll 파일의 올바른 경로로 대체합니다. .dll 파일은 .NET Framework가 설치된 폴더에 있습니다. 기본적으로 이 폴더는 C:\WINDOWS\Microsoft.NET\Framework\version입니다.

    <configuration>
      <system.web>
        <httpHandlers>      <add verb="*" path="*.sample"         type="HelloWorldHandler"/>    </httpHandlers>
      </system.web>
        <system.webServer>
            <handlers>            <add  verb="*" path="*.sample"                  name="HelloWorldHandler"                  type="HelloWorldHandler"                  modules="IsapiModule"/>                  scriptProcessor="%path%\aspnet_isapi.dll"        </handlers>
        </system.webServer>
    </configuration>
    

    구성 요소는 사용자 지정 처리기를 클래스 이름별로 등록하고 .sample 파일 이름 확장명을 해당 처리기에 매핑합니다.

    참고:

    사용자 지정 파일 이름 확장명을 등록하는 것이기 때문에 handlers 섹션 및 httpHandlers 섹션 모두에서 처리기를 등록합니다. 기본 모드에서는 이전 버전과의 호환성을 위해 modules 특성을 사용하여 처리기를 ISAPI 모듈로 지정합니다. ASP.NET ISAPI dll의 경로는 scriptProcessor 특성을 사용하여 지정됩니다. name 특성은 handlers 섹션에 필수적입니다.

통합 모드로 실행되는 IIS 7.0에서 처리기를 등록하려면

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

  2. 아래에 강조 표시된 요소를 Web.config 파일에 추가합니다.

    <configuration>
      <system.webServer>
        <handlers>      <add verb="*" path="*.sample"         name="HelloWorldHandler"        type="HelloWorldHandler"/>    </handlers>
      </system.webServer>
    </configuration>
    

    구성 요소는 사용자 지정 처리기를 클래스 이름별로 등록하고 .sample 파일 이름 확장명을 해당 처리기에 매핑합니다.

    참고:

    등록은 httpHandlers 섹션이 아닌 handlers 섹션에서 이루어집니다. name 특성은 필수적 요소입니다.

사용자 지정 HTTP 처리기 테스트

사용자 지정 HTTP 처리기를 만들고 등록한 후에는 테스트할 수 있습니다.

사용자 지정 HTTP 처리기를 테스트하려면

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

  2. 브라우저에서 .sample로 끝나는 URL을 입력합니다. 예를 들면 다음과 같이 URL을 입력합니다.

    https://localhost/SampleApplication/test.sample
    

    HelloWorldHandler 클래스에 정의된 텍스트가 표시됩니다.

참고 항목

작업

방법: 비동기 HTTP 처리기 만들기

개념

IIS 5.0 및 6.0의 ASP.NET 응용 프로그램 수명 주기 개요

기타 리소스

ASP.NET 수명 주기