다음을 통해 공유


처리기 <추가 추가>

개요

<add> 컬렉션의 <handlers> 요소는 IIS(인터넷 정보 서비스) 7에 대한 HTTP 처리기 목록에 처리기를 추가합니다.

호환성

버전 참고
IIS 10.0 <add> 요소가 IIS 10.0에서 수정되지 않았습니다.
IIS 8.5 <add> 요소가 IIS 8.5에서 수정되지 않았습니다.
IIS 8.0 <add> 요소가 IIS 8.0에서 수정되지 않았습니다.
IIS 7.5 <add> 요소가 IIS 7.5에서 수정되지 않았습니다.
IIS 7.0 <add> 컬렉션의 <handlers> 요소는 IIS 7.0에서 도입되었습니다.
IIS 6.0 해당 없음

설치 프로그램

<add> 컬렉션의 <handlers> 요소는 IIS 7의 기본 설치에 포함됩니다.

방법

통합 모드에서 실행되는 IIS 7 애플리케이션에서 ASP.NET 처리기에 대한 처리기 매핑을 만드는 방법

  1. IIS(인터넷 정보 서비스) 관리자를 엽니다.

    • Windows Server 2012 또는 Windows Server 2012 R2를 사용하는 경우:

      • 작업 표시줄에서 서버 관리자 클릭하고 도구를 클릭한 다음 IIS(인터넷 정보 서비스) 관리자를 클릭합니다.
    • Windows 8 또는 Windows 8.1 사용하는 경우:

      • Windows 키를 누른 채로 문자 X를 누른 다음 제어판 클릭합니다.
      • 관리 도구를 클릭한 다음 IIS(인터넷 정보 서비스) 관리자를 두 번 클릭합니다.
    • Windows Server 2008 또는 Windows Server 2008 R2를 사용하는 경우:

      • 작업 표시줄에서 시작을 클릭하고 관리 도구를 가리킨 다음 IIS(인터넷 정보 서비스) 관리자를 클릭합니다.
    • Windows Vista 또는 Windows 7을 사용하는 경우:

      • 작업 표시줄에서 시작을 클릭한 다음 제어판 클릭합니다.
      • 관리 도구를 두 번 클릭한 다음 IIS(인터넷 정보 서비스) 관리자를 두 번 클릭합니다.
  2. 연결 창에서 네이티브 모듈을 추가할 서버 연결을 클릭합니다.

  3. 창에서 처리기 매핑을 두 번 클릭합니다.
    기본 웹 사이트 홈 페이지를 표시하는 I S 관리자의 스크린샷. 처리기 매핑 아이콘이 강조 표시됩니다.

  4. 작업 창에서 관리되는 처리기 추가...를 클릭합니다.

  5. 관리되는 처리기 추가 대화 상자에서 다음을 지정합니다.

    • 요청 경로입니다. 매핑할 파일 이름 또는 파일 이름 확장명입니다.

    • Type. 관리되는 처리기의 형식(클래스) 이름입니다. 처리기가 애플리케이션의 app_code 또는 bin 폴더에 정의된 경우 해당 형식 이름이 드롭다운 목록에 표시됩니다.

    • 이름. 설명이 포함된 이름입니다.

      관리되는 처리기 추가 대화 상자의 스크린샷.

  6. 확인을 클릭하여 관리되는 처리기 추가 대화 상자를 닫습니다.

FastCGI 처리기 매핑을 만드는 방법

  1. IIS(인터넷 정보 서비스) 관리자를 엽니다.

    • Windows Server 2012 또는 Windows Server 2012 R2를 사용하는 경우:

      • 작업 표시줄에서 서버 관리자 클릭하고 도구를 클릭한 다음 IIS(인터넷 정보 서비스) 관리자를 클릭합니다.
    • Windows 8 또는 Windows 8.1 사용하는 경우:

      • Windows 키를 누른 채로 문자 X를 누른 다음 제어판 클릭합니다.
      • 관리 도구를 클릭한 다음 IIS(인터넷 정보 서비스) 관리자를 두 번 클릭합니다.
    • Windows Server 2008 또는 Windows Server 2008 R2를 사용하는 경우:

      • 작업 표시줄에서 시작을 클릭하고 관리 도구를 가리킨 다음 IIS(인터넷 정보 서비스) 관리자를 클릭합니다.
    • Windows Vista 또는 Windows 7을 사용하는 경우:

      • 작업 표시줄에서 시작을 클릭한 다음 제어판 클릭합니다.
      • 관리 도구를 두 번 클릭한 다음 IIS(인터넷 정보 서비스) 관리자를 두 번 클릭합니다.
  2. 연결 창에서 FastCGI 처리기 매핑을 구성할 서버 이름을 클릭합니다.

  3. 창에서 처리기 매핑을 두 번 클릭합니다.
    서버 홈페이지를 표시하는 IS Manager 창의 스크린샷. 처리기 매핑 아이콘이 강조 표시되어 있습니다.

  4. 작업 창에서 모듈 매핑 추가...를 클릭합니다.

    참고

    다음 단계가 작동하려면 지정한 파일 경로 또는 파일 이름 확장명을 실행할 이진 파일이 이미 설치되어 있어야 합니다. 이 예제에서는 Microsoft 웹 사이트에서 사용할 수 있는 PHP 구현을 사용합니다.

  5. 요청 경로 상자에 파일 이름 확장명(예: .php)을 입력하고, 모듈 드롭다운 목록에서 FastCGIModule을 클릭하고, 실행 파일 상자에 스크립팅 엔진의 경로(이 예제에서는 PHP-CGI.exe)를 입력한 다음 확인을 클릭합니다.
    모듈 매핑 추가 대화 상자의 스크린샷

  6. 모듈 매핑 추가 대화 상자에서 예를 클릭합니다.
    모듈 매핑 정보 추가 대화 상자의 스크린샷

구성

특성

attribute Description
allowPathInfo 선택적 부울 특성입니다.

처리기가 contoso/marketing/imageGallery.aspx와 같은 URI에서 전체 경로 정보를 처리하는지 여부를 지정합니다. 값이 true이면 처리기는 전체 경로인 contoso/marketing/imageGallery를 처리합니다. 값이 false이면 처리기는 경로의 마지막 섹션인 /imageGallery만 처리합니다.

기본값은 false입니다.
modules 선택적 문자열 특성입니다.

확장명을 사용하여 파일 이름 또는 파일 이름을 매핑할 모듈 또는 모듈의 이름을 지정합니다. 둘 이상의 값을 지정하는 경우 값을 쉼표(,)로 구분합니다.

기본값은 ManagedPipelineHandler입니다.
name 필수 문자열 특성입니다.

처리기 매핑의 고유한 이름을 지정합니다.
path 필수 문자열 특성입니다.

처리기 매핑이 적용되는 파일 이름 또는 파일 이름 확장명을 지정합니다.
preCondition 선택적 문자열 특성입니다.

처리기가 실행될 조건을 지정합니다.

preCondition 특성은 다음 가능한 값 중 하나 이상이 될 수 있습니다. 둘 이상의 값을 지정하는 경우 값을 쉼표(,)로 구분합니다.
Description
bitness32 처리기가 32비트 .dll 파일인 경우 bitness32 값을 지정하고 IIS는 64비트 운영 체제에서 WOW64 모드(32비트 시뮬레이션)로 실행되는 작업자 프로세스에 대해서만 처리기를 로드해야 합니다.
bitness64 처리기가 64비트 .dll 파일인 경우 bitness64 값을 지정하고 IIS는 64비트 모드에서 실행되는 작업자 프로세스에 대해서만 처리기를 로드해야 합니다.
integratedMode 처리기가 통합 요청 처리 파이프라인을 사용하도록 구성된 애플리케이션 풀의 요청에만 응답해야 하는 경우 integratedMode 값을 지정합니다.
ISAPIMode 처리기가 클래식 모드를 사용하도록 구성된 애플리케이션 풀의 요청에만 응답해야 하는 경우 ISAPIMode 값을 지정합니다.
runtimeVersionv1.1 처리기가 .NET Framework 버전 1.1을 사용하도록 구성된 애플리케이션 풀의 요청에만 응답해야 하는 경우 runtimeVersionv1.1 값을 지정합니다.
runtimeVersionv2.0 처리기가 .NET Framework 버전 2.0을 사용하도록 구성된 애플리케이션 풀의 요청에만 응답해야 하는 경우 runtimeVersionv2.0 값을 지정합니다.
requireAccess 선택적 열거형 특성입니다.

처리기가 리소스에 필요한 액세스 유형을 지정합니다.

requireAccess 특성은 다음 가능한 값 중 하나 이상이 될 수 있습니다. 둘 이상의 값을 지정하는 경우 값을 쉼표(,)로 구분합니다. 기본값은 Script입니다.
Description
실행 처리기에 실행 파일을 실행할 수 있는 권한이 필요하도록 지정합니다.

숫자 값은 입니다 4.
없음 처리기에 액세스 요구 사항이 없음을 지정합니다.

숫자 값은 입니다 0.
읽기 처리기에 읽기 권한이 필요하도록 지정합니다.

숫자 값은 입니다 1.
스크립트 처리기에 스크립트를 실행할 수 있는 권한이 필요하도록 지정합니다.

숫자 값은 입니다 3.
쓰기 처리기에 쓰기 권한이 필요하도록 지정합니다.

숫자 값은 입니다 2.
resourceType 선택적 문자열 특성입니다.

처리기 매핑이 적용되는 리소스 유형을 지정합니다.

resourceType 특성은 다음과 같은 가능한 값 중 하나일 수 있습니다. 기본값은 Unspecified입니다.
Description
Directory 처리기 매핑이 디스크의 실제 폴더에 대한 요청에만 적용되도록 지정합니다.

숫자 값은 입니다 1.
Either 처리기 매핑이 디스크의 실제 파일 또는 폴더에 대한 요청에 적용되도록 지정합니다.

숫자 값은 입니다 2.
File 처리기 매핑이 디스크의 실제 파일에 대한 요청에만 적용되도록 지정합니다.

숫자 값은 입니다 0.
Unspecified 매핑 형식이 지정되지 않도록 지정합니다. 처리기 매핑은 요청이 디스크의 실제 파일 또는 폴더에 매핑되는지 여부에 관계없이 요청에 적용됩니다. 처리기를 디스크에 없는 파일 이름 또는 파일 이름 확장명(예: MyHandler.axd)에 매핑할 때 이 설정을 사용합니다.

숫자 값은 입니다 3.
responseBufferLimit 선택적 uint 특성입니다.

요청 처리기에 대한 응답 버퍼의 최대 크기(바이트)를 지정합니다.

기본값은 바이트입니다 4194304 .
scriptProcessor 선택적 문자열 특성입니다.

요청을 처리하는 ISAPI 확장명 .dll 파일 또는 CGI(Common Gateway Interface) .exe 파일의 실제 경로를 지정합니다.

scriptProcessor 특성은 스크립트 맵 처리기 매핑에만 필요합니다. 처리기를 ISAPI 확장에 매핑하는 경우 모듈 특성에 대해 ISAPIModule을 지정해야 합니다. 처리기를 CGI 파일에 매핑하는 경우 모듈 특성에 대해 CGIModule을 지정해야 합니다.
type 선택적 문자열 특성입니다.

관리되는 처리기의 네임스페이스 경로를 지정합니다. 형식 특성은 관리되는 처리기에만 필요합니다.
verb 필수 문자열 특성입니다.

처리기 매핑이 적용되는 HTTP 동사를 지정합니다.

자식 요소

없음

구성 샘플

다음 예제에는 처리기 매핑을 정의하는 두 <add> 가지 요소가 포함되어 있습니다. 첫 번째 <add> 요소는 IIS 7 통합 모드에서 실행되는 웹 애플리케이션에 대한 SampleHandler 처리기를 정의합니다. 웹 애플리케이션의 app_code 디렉터리에 처리기 어셈블리를 추가하는 경우 형식 특성 값에 어셈블리 이름을 포함할 필요가 없습니다. 두 번째 <add> 요소는 FastCGI 모듈을 사용하는 PHP 요청에 대한 매핑을 정의합니다.

<handlers>
   <add name="SampleHandler" verb="*" 
      path="SampleHandler.new" 
      type="SampleHandler, SampleHandlerAssembly" 
      resourceType="Unspecified" />
   <add name="PHP-FastCGI" verb="*" 
      path="*.php" 
      modules="FastCgiModule"
      scriptProcessor="c:\php\php-cgi.exe" 
      resourceType="Either" />
</handlers>

샘플 코드

다음 예제에서는 PHP 모듈에 대한 FastCGI 매핑을 추가한 다음, PHP 요청을 처리할 Contoso 웹 사이트에 처리기를 추가합니다.

AppCmd.exe

appcmd.exe set config -section:system.webServer/fastCgi /+"[fullPath='c:\php\php-cgi.exe']" /commit:apphost

appcmd.exe set config "Contoso" -section:system.webServer/handlers /+"[name='PHP-FastCGI',path='*.php',verb='GET,HEAD,POST',modules='FastCgiModule',scriptProcessor='c:\php\php-cgi.exe',resourceType='Either']"

참고

이 두 번째 예제에서는 특정 URL에 대해 SampleHandler.new라는 새 ASP.NET 처리기 매핑을 웹 애플리케이션에 추가하는 방법을 보여 줍니다.

appcmd.exe set config /section:system.webServer/handlers /+[name=SampleHandler',path='SampleHandler.new',verb='*',type='SampleHandler']

C#

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample
{
   private static void Main()
   {
      using (ServerManager serverManager = new ServerManager())
      {
         Configuration appHostConfig = serverManager.GetApplicationHostConfiguration();
         ConfigurationSection fastCgiSection = appHostConfig.GetSection("system.webServer/fastCgi");
         ConfigurationElementCollection fastCgiCollection = fastCgiSection.GetCollection();
         ConfigurationElement applicationElement = fastCgiCollection.CreateElement("application");
         applicationElement["fullPath"] = @"c:\php\php-cgi.exe";
         fastCgiCollection.Add(applicationElement);

         Configuration webConfig = serverManager.GetWebConfiguration("Contoso");
         ConfigurationSection handlersSection = webConfig.GetSection("system.webServer/handlers");
         ConfigurationElementCollection handlersCollection = handlersSection.GetCollection();
         ConfigurationElement addElement = handlersCollection.CreateElement("add");
         addElement["name"] = @"PHP-FastCGI";
         addElement["path"] = @"*.php";
         addElement["verb"] = @"GET,HEAD,POST";
         addElement["modules"] = @"FastCgiModule";
         addElement["scriptProcessor"] = @"c:\php\php-cgi.exe";
         addElement["resourceType"] = @"Either";
         handlersCollection.AddAt(0, addElement);

         serverManager.CommitChanges();
      }
   }
}

VB.NET

Imports System
Imports System.Text
Imports Microsoft.Web.Administration

Module Sample
   Sub Main()
      Dim serverManager As ServerManager = New ServerManager
      Dim appHostConfig As Configuration = serverManager.GetApplicationHostConfiguration
      Dim fastCgiSection As ConfigurationSection = appHostConfig.GetSection("system.webServer/fastCgi")
      Dim fastCgiCollection As ConfigurationElementCollection = fastCgiSection.GetCollection
      Dim applicationElement As ConfigurationElement = fastCgiCollection.CreateElement("application")
      applicationElement("fullPath") = "c:\php\php-cgi.exe"
      fastCgiCollection.Add(applicationElement)

      Dim webConfig As Configuration = serverManager.GetWebConfiguration("Contoso")
      Dim handlersSection As ConfigurationSection = webConfig.GetSection("system.webServer/handlers")
      Dim handlersCollection As ConfigurationElementCollection = handlersSection.GetCollection
      Dim addElement As ConfigurationElement = handlersCollection.CreateElement("add")
      addElement("name") = "PHP-FastCGI"
      addElement("path") = "*.php"
      addElement("verb") = "GET,HEAD,POST"
      addElement("modules") = "FastCgiModule"
      addElement("scriptProcessor") = "c:\php\php-cgi.exe"
      addElement("resourceType") = "Either"
      handlersCollection.AddAt(0, addElement)

      serverManager.CommitChanges()
   End Sub
End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');

adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var fastCgiSection = adminManager.GetAdminSection("system.webServer/fastCgi", "MACHINE/WEBROOT/APPHOST");
var fastCgiCollection = fastCgiSection.Collection;
var applicationElement = fastCgiCollection.CreateNewElement("application");
applicationElement.Properties.Item("fullPath").Value = "c:\\php\\php-cgi.exe";
fastCgiCollection.AddElement(applicationElement);
adminManager.CommitChanges();

adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST/Contoso";
var handlersSection = adminManager.GetAdminSection("system.webServer/handlers", "MACHINE/WEBROOT/APPHOST/Contoso");
var handlersCollection = handlersSection.Collection;
var addElement = handlersCollection.CreateNewElement("add");
addElement.Properties.Item("name").Value = "PHP-FastCGI";
addElement.Properties.Item("path").Value = "*.php";
addElement.Properties.Item("verb").Value = "GET,HEAD,POST";
addElement.Properties.Item("modules").Value = "FastCgiModule";
addElement.Properties.Item("scriptProcessor").Value = "c:\\php\\php-cgi.exe";
addElement.Properties.Item("resourceType").Value = "Either";
handlersCollection.AddElement(addElement, 0);
adminManager.CommitChanges();

VBScript

Set adminManager = createObject("Microsoft.ApplicationHost.WritableAdminManager")

adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set fastCgiSection = adminManager.GetAdminSection("system.webServer/fastCgi", "MACHINE/WEBROOT/APPHOST")
Set fastCgiCollection = fastCgiSection.Collection
Set applicationElement = fastCgiCollection.CreateNewElement("application")
applicationElement.Properties.Item("fullPath").Value = "c:\php\php-cgi.exe"
fastCgiCollection.AddElement applicationElement
adminManager.CommitChanges()

adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST/Contoso"
Set handlersSection = adminManager.GetAdminSection("system.webServer/handlers", "MACHINE/WEBROOT/APPHOST/Contoso")
Set handlersCollection = handlersSection.Collection
Set addElement = handlersCollection.CreateNewElement("add")
addElement.Properties.Item("name").Value = "PHP-FastCGI"
addElement.Properties.Item("path").Value = "*.php"
addElement.Properties.Item("verb").Value = "GET,HEAD,POST"
addElement.Properties.Item("modules").Value = "FastCgiModule"
addElement.Properties.Item("scriptProcessor").Value = "c:\php\php-cgi.exe"
addElement.Properties.Item("resourceType").Value = "Either"
handlersCollection.AddElement addElement, 0
adminManager.CommitChanges()