Добавление обработчиков <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, работающем в режиме интеграции
Откройте диспетчер служб 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.
В области Подключения щелкните подключение к серверу, к которому вы хотите добавить собственный модуль.
На панели Главная дважды щелкните Сопоставления обработчиков.
На панели Действия щелкните Добавить управляемый обработчик...
В диалоговом окне Добавление управляемого обработчика укажите следующее:
Путь запроса. Имя файла или расширение имени файла для сопоставления.
Type. Имя типа (класса) управляемого обработчика. Если обработчик определен в папках app_code или bin приложения, его имя типа появится в раскрывающемся списке.
Имя. Описательное имя.
Нажмите кнопку ОК , чтобы закрыть диалоговое окно Добавление управляемого обработчика .
Создание сопоставления обработчика FastCGI
Откройте диспетчер служб 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.
В области Подключения щелкните имя сервера, для которого требуется настроить сопоставления обработчиков FastCGI.
На панели Главная дважды щелкните Сопоставления обработчиков.
В области Действия щелкните Добавить сопоставление модулей...
Примечание
Чтобы выполнить следующие действия, необходимо уже установить двоичные файлы, которые будут выполнять указанный путь к файлу или расширение имени файла. В этом примере используется реализация PHP, доступная на веб-сайте Майкрософт.
Введите расширение имени файла, например.php, в поле Путь запроса , щелкните FastCGIModule в раскрывающемся списке Модуль , введите путь к обработчику сценариев (в этом примере PHP-CGI.exe) в поле Исполняемый файл и нажмите кнопку ОК.
В диалоговом окне Добавление сопоставления модулей нажмите кнопку Да.
Конфигурация
Атрибуты
Атрибут | Описание | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
allowPathInfo |
Дополнительный логический атрибут. Указывает, обрабатывает ли обработчик полный путь в универсальном коде ресурса (URI), например contoso/marketing/imageGallery.aspx. Если значение равно true, обработчик обрабатывает полный путь contoso/marketing/imageGallery. Если значение равно false, обработчик обрабатывает только последний раздел пути , /imageGallery. Значение по умолчанию — false . |
||||||||||||||
modules |
Необязательный строковый атрибут. Указывает имя модуля или модулей, с которыми вы хотите сопоставить имя файла или имя файла с расширением. Если указано несколько значений, разделите значения запятой (,). Значение по умолчанию — ManagedPipelineHandler . |
||||||||||||||
name |
Обязательный строковый атрибут. Указывает уникальное имя сопоставления обработчика. |
||||||||||||||
path |
Обязательный строковый атрибут. Указывает имя файла или расширение имени файла, для которого применяется сопоставление обработчика. |
||||||||||||||
preCondition |
Необязательный строковый атрибут. Указывает условия, при которых будет выполняться обработчик. Атрибут preCondition может быть одним или несколькими из следующих возможных значений. Если указано несколько значений, разделите значения запятой (,).
|
||||||||||||||
requireAccess |
Необязательный атрибут перечисления. Указывает тип доступа, который требуется обработчику к ресурсу. Атрибут requireAccess может быть одним или несколькими из следующих возможных значений. Если указано несколько значений, разделите значения запятыми (,). Значение по умолчанию — Script .
|
||||||||||||||
resourceType |
Необязательный строковый атрибут. Указывает тип ресурса, к которому применяется сопоставление обработчика. Атрибут resourceType может быть одним из следующих возможных значений. Значение по умолчанию — Unspecified .
|
||||||||||||||
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()