Добавление обработчиков <add>

Общие сведения

Элемент <add><handlers> коллекции добавляет обработчик в список обработчиков HTTP для служб IIS 7.

Совместимость

Версия Примечания
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 по умолчанию.

Инструкции

Создание сопоставления обработчика для обработчика ASP.NET в приложении IIS 7, работающем в режиме интеграции

  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 I SS с домашней страницей веб-сайта по умолчанию. Выделен значок Сопоставления обработчиков.

  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. На панели Главная дважды щелкните Сопоставления обработчиков.
    Снимок экрана: окно диспетчера I IS с домашней страницей сервера. Выделен значок сопоставления обработчиков.

  4. В области Действия щелкните Добавить сопоставление модулей...

    Примечание

    Чтобы выполнить следующие действия, необходимо уже установить двоичные файлы, которые будут выполнять указанный путь к файлу или расширение имени файла. В этом примере используется реализация PHP, доступная на веб-сайте Майкрософт.

  5. Введите расширение имени файла, например.php, в поле Путь запроса , щелкните FastCGIModule в раскрывающемся списке Модуль , введите путь к обработчику сценариев (в этом примере PHP-CGI.exe) в поле Исполняемый файл и нажмите кнопку ОК.
    Снимок экрана: диалоговое окно

  6. В диалоговом окне Добавление сопоставления модулей нажмите кнопку Да.
    Снимок экрана: диалоговое окно

Конфигурация

Атрибуты

Атрибут Описание
allowPathInfo Дополнительный логический атрибут.

Указывает, обрабатывает ли обработчик полный путь в универсальном коде ресурса (URI), например contoso/marketing/imageGallery.aspx. Если значение равно true, обработчик обрабатывает полный путь contoso/marketing/imageGallery. Если значение равно false, обработчик обрабатывает только последний раздел пути , /imageGallery.

Значение по умолчанию — false.
modules Необязательный строковый атрибут.

Указывает имя модуля или модулей, с которыми вы хотите сопоставить имя файла или имя файла с расширением. Если указано несколько значений, разделите значения запятой (,).

Значение по умолчанию — ManagedPipelineHandler.
name Обязательный строковый атрибут.

Указывает уникальное имя сопоставления обработчика.
path Обязательный строковый атрибут.

Указывает имя файла или расширение имени файла, для которого применяется сопоставление обработчика.
preCondition Необязательный строковый атрибут.

Указывает условия, при которых будет выполняться обработчик.

Атрибут preCondition может быть одним или несколькими из следующих возможных значений. Если указано несколько значений, разделите значения запятой (,).
Значение Описание
bitness32 Укажите значение bitness32, если обработчик является 32-разрядным файлом .dll, а службы IIS должны загружать обработчик только для рабочих процессов, которые выполняются в режиме WOW64 (32-разрядное моделирование) в 64-разрядной операционной системе.
bitness64 Укажите значение разрядности64, если обработчик является 64-разрядным файлом .dll, а службы IIS должны загружать обработчик только для рабочих процессов, которые выполняются в 64-разрядном режиме.
integratedMode Укажите значение integratedMode , если обработчик должен отвечать только на запросы в пулах приложений, настроенных для использования интегрированного конвейера обработки запросов.
ISAPIMode Укажите значение ISAPIMode , если обработчик должен отвечать только на запросы в пулах приложений, настроенных для использования классического режима.
runtimeVersionv1.1 Укажите значение runtimeVersionv1.1, если обработчик должен отвечать только на запросы в пулах приложений, настроенных для использования платформа .NET Framework версии 1.1.
runtimeVersionv2.0 Укажите значение runtimeVersionv2.0, если обработчик должен отвечать только на запросы в пулах приложений, настроенных для использования платформа .NET Framework версии 2.0.
requireAccess Необязательный атрибут перечисления.

Указывает тип доступа, который требуется обработчику к ресурсу.

Атрибут requireAccess может быть одним или несколькими из следующих возможных значений. Если указано несколько значений, разделите значения запятыми (,). Значение по умолчанию — Script.
Значение Описание
Execute Указывает, что обработчику требуются права на выполнение исполняемых файлов.

Числовое значение равно 4.
None Указывает, что обработчик не имеет требований к доступу.

Числовое значение равно 0.
Чтение Указывает, что обработчику требуются разрешения на чтение.

Числовое значение равно 1.
Сценарий Указывает, что обработчику требуются права на выполнение скриптов.

Числовое значение равно 3.
запись Указывает, что обработчику требуются разрешения на запись.

Числовое значение равно 2.
resourceType Необязательный строковый атрибут.

Указывает тип ресурса, к которому применяется сопоставление обработчика.

Атрибут resourceType может быть одним из следующих возможных значений. Значение по умолчанию — Unspecified.
Значение Описание
Directory Указывает, что сопоставление обработчика применяется к запросам только для физических папок на диске.

Числовое значение равно 1.
Either Указывает, что сопоставление обработчика применяется к запросам для физических файлов или папок на диске.

Числовое значение равно 2.
File Указывает, что сопоставление обработчика применяется к запросам только для физических файлов на диске.

Числовое значение равно 0.
Unspecified Указывает, что тип сопоставления не указан. Сопоставление обработчика применяется к запросам независимо от того, сопоставляется ли запрос с физическим файлом или папкой на диске. Используйте этот параметр при сопоставлении обработчика с именем файла или расширением, которое не существует на диске, например MyHandler.axd.

Числовое значение равно 3.
responseBufferLimit Необязательный атрибут uint.

Указывает максимальный размер (в байтах) буфера ответов для обработчика запросов.

Значение по умолчанию — 4194304 байты.
scriptProcessor Необязательный строковый атрибут.

Указывает физический путь к файлу расширения ISAPI .dll или файлу .exe интерфейса общего шлюза (CGI), обрабатывающего запрос.

Атрибут scriptProcessor требуется только для сопоставлений обработчиков карт скриптов. При сопоставлении обработчика с расширением ISAPI необходимо указать ISAPIModule для атрибута modules. При сопоставлении обработчика с CGI-файлом необходимо указать CGIModule для атрибута modules.
type Необязательный строковый атрибут.

Указывает путь к пространству имен управляемого обработчика. Атрибут type требуется только для управляемых обработчиков.
verb Обязательный строковый атрибут.

Указывает HTTP-команды, к которым применяется сопоставление обработчика.

Дочерние элементы

Отсутствует.

Образец конфигурации

Следующий пример содержит два <add> элемента, определяющих сопоставления обработчиков. Первый <add> элемент определяет обработчик SampleHandler для веб-приложения, работающего в режиме интеграции IIS 7. При добавлении сборки обработчика в каталог app_code веб-приложения не нужно включать имя сборки в значение атрибута типа . Второй <add> элемент определяет сопоставление для запросов PHP, использующих модуль FastCGI.

<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>

Пример кода

В следующих примерах добавляется сопоставление FastCGI для модуля PHP, а затем на веб-сайте Contoso добавляется обработчик, который будет обрабатывать запросы PHP.

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']"

Примечание

Во втором примере показано, как добавить новое сопоставление обработчика ASP.NET с именем SampleHandler.new для определенного URL-адреса в веб-приложение.

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()