Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Visão geral
O <add> elemento da <handlers> coleção adiciona um manipulador à lista de manipuladores HTTP do IIS (Serviços de Informações da Internet) 7.
Compatibilidade
| Versão | Anotações |
|---|---|
| IIS 10.0 | O <add> elemento não foi modificado no IIS 10.0. |
| IIS 8.5 | O <add> elemento não foi modificado no IIS 8.5. |
| IIS 8.0 | O <add> elemento não foi modificado no IIS 8.0. |
| IIS 7.5 | O <add> elemento não foi modificado no IIS 7.5. |
| IIS 7.0 | O <add> elemento da <handlers> coleção foi introduzido no IIS 7.0. |
| IIS 6.0 | N/A |
Configuração
O <add> elemento da <handlers> coleção está incluído na instalação padrão do IIS 7.
Como Fazer
Como criar um mapeamento de manipulador para um manipulador de ASP.NET em um aplicativo do IIS 7 em execução no modo integrado
Abra o Gerenciador do IIS (Serviços de Informações da Internet):
Se você estiver usando o Windows Server 2012 ou o Windows Server 2012 R2:
- Na barra de tarefas, clique em Gerenciador de Servidores, clique em Ferramentas e, em seguida, clique no Gerenciador de Serviços de Informações da Internet (IIS).
Se você estiver usando o Windows 8 ou o Windows 8.1:
- Mantenha pressionada a tecla Windows , pressione a letra X e clique em Painel de Controle.
- Clique em Ferramentas Administrativas e clique duas vezes no Gerenciador dos Serviços de Informações da Internet (IIS).
Se você estiver usando o Windows Server 2008 ou o Windows Server 2008 R2:
- Na barra de tarefas, clique em Iniciar, aponte para Ferramentas Administrativas e clique no Gerenciador de Serviços de Informações da Internet (IIS).
Se você estiver usando o Windows Vista ou o Windows 7:
- Na barra de tarefas, clique em Iniciar e clique em Painel de Controle.
- Clique duas vezes em Ferramentas Administrativas e clique duas vezes no Gerenciador dos Serviços de Informações da Internet (IIS).
No painel Conexões , clique na conexão do servidor à qual você deseja adicionar o módulo nativo.
No painel Página Inicial, clique duas vezes em Mapeamentos de Manipulador.
No painel Ações , clique em Adicionar Manipulador Gerenciado...
Na caixa de diálogo Adicionar Manipulador Gerenciado , especifique o seguinte:
Caminho da solicitação. O nome do arquivo ou a extensão de nome de arquivo a ser mapeada.
Tipo O nome do tipo (classe) do manipulador gerenciado. Se o manipulador for definido nas pastas app_code ou bin do aplicativo, seu nome de tipo aparecerá na lista suspensa.
Nome. Um nome descritivo.
Clique em OK para fechar a caixa de diálogo Adicionar Manipulador Gerenciado .
Como criar um mapeamento do manipulador FastCGI
Abra o Gerenciador do IIS (Serviços de Informações da Internet):
Se você estiver usando o Windows Server 2012 ou o Windows Server 2012 R2:
- Na barra de tarefas, clique em Gerenciador de Servidores, clique em Ferramentas e, em seguida, clique no Gerenciador de Serviços de Informações da Internet (IIS).
Se você estiver usando o Windows 8 ou o Windows 8.1:
- Mantenha pressionada a tecla Windows , pressione a letra X e clique em Painel de Controle.
- Clique em Ferramentas Administrativas e clique duas vezes no Gerenciador dos Serviços de Informações da Internet (IIS).
Se você estiver usando o Windows Server 2008 ou o Windows Server 2008 R2:
- Na barra de tarefas, clique em Iniciar, aponte para Ferramentas Administrativas e clique no Gerenciador de Serviços de Informações da Internet (IIS).
Se você estiver usando o Windows Vista ou o Windows 7:
- Na barra de tarefas, clique em Iniciar e clique em Painel de Controle.
- Clique duas vezes em Ferramentas Administrativas e clique duas vezes no Gerenciador dos Serviços de Informações da Internet (IIS).
No painel Conexões , clique no nome do servidor para o qual você deseja configurar mapeamentos do manipulador FastCGI.
No painel Página Inicial, clique duas vezes em Mapeamentos de Manipulador.
No painel Ações , clique em Adicionar Mapeamento de Módulo...
Observação
Para que as próximas etapas funcionem, você já deve ter instalado binários que executarão o caminho do arquivo ou a extensão de nome de arquivo que você especificar. Este exemplo usa uma implementação php disponível no site da Microsoft.
Digite a extensão de nome do arquivo, as.php na caixa Demarcar solicitação, clique em FastCGIModule na lista suspensa módulo , digite o caminho para o mecanismo de script (neste exemplo, PHP-CGI.exe) na caixa Executável e clique em OK.
Na caixa de diálogo Adicionar Mapeamento de Módulo , clique em Sim.
Configuração
Attributes
| Attribute | Description | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
allowPathInfo |
Atributo booliano opcional. Especifica se o manipulador processa informações de caminho completo em um URI, como contoso/marketing/imageGallery.aspx. Se o valor for true, o manipulador processará o caminho completo, contoso/marketing/imageGallery. Se o valor for falso, o manipulador processará apenas a última seção do caminho, /imageGallery. O valor padrão é false. |
||||||||||||||
modules |
Atributo de cadeia de caracteres opcional. Especifica o nome do módulo ou módulo para o qual você deseja mapear o nome do arquivo ou o nome do arquivo com a extensão. Se você especificar mais de um valor, separe os valores com uma vírgula (,). O valor padrão é ManagedPipelineHandler. |
||||||||||||||
name |
Atributo de cadeia de caracteres obrigatório. Especifica o nome exclusivo do mapeamento do manipulador. |
||||||||||||||
path |
Atributo de cadeia de caracteres obrigatório. Especifica o nome do arquivo ou a extensão de nome de arquivo para a qual o mapeamento do manipulador se aplica. |
||||||||||||||
preCondition |
Atributo de cadeia de caracteres opcional. Especifica as condições sob as quais o manipulador será executado. O atributo preCondition pode ser um ou mais dos valores possíveis a seguir. Se você especificar mais de um valor, separe os valores com uma vírgula (,).
|
||||||||||||||
requireAccess |
Atributo de enumeração opcional. Especifica o nível de acesso no qual um manipulador será executado. O atributo requireAccess pode ser um ou mais dos valores possíveis a seguir. Se você especificar mais de um valor, separe os valores com uma vírgula (,). O valor padrão é Script. Nota: Mesmo que o valor requireAccess de um manipulador não corresponda ao nível atual accessPolicy , ele permanecerá parte do conjunto configurado de manipuladores e poderá ser inicializado, embora não seja executado.
|
||||||||||||||
resourceType |
Atributo de cadeia de caracteres opcional. Especifica o tipo de recurso ao qual o mapeamento do manipulador se aplica. O atributo resourceType pode ser um dos valores possíveis a seguir. O valor padrão é Unspecified.
|
||||||||||||||
responseBufferLimit |
Atributo uint opcional. Especifica o tamanho máximo, em bytes, do buffer de resposta para um manipulador de solicitação. O valor padrão é 4194304 bytes. |
||||||||||||||
scriptProcessor |
Atributo de cadeia de caracteres opcional. Especifica o caminho físico do arquivo .dll da extensão ISAPI ou do arquivo CGI (Common Gateway Interface) .exe que processa a solicitação. O atributo scriptProcessor é necessário apenas para mapeamentos de manipulador de mapa de script. Ao mapear um manipulador para uma extensão ISAPI, você deve especificar ISAPIModule para o atributo de módulos. Ao mapear um manipulador para um arquivo CGI, você deve especificar CGIModule para o atributo de módulos. |
||||||||||||||
type |
Atributo de cadeia de caracteres opcional. Especifica o caminho do namespace de um manipulador gerenciado. O atributo de tipo é necessário apenas para manipuladores gerenciados. |
||||||||||||||
verb |
Atributo de cadeia de caracteres obrigatório. Especifica os verbos HTTP para os quais o mapeamento do manipulador se aplica. |
Elementos filho
Nenhum.
Exemplo de configuração
O exemplo a seguir contém dois <add> elementos que definem mapeamentos de manipulador. O primeiro <add> elemento define um manipulador SampleHandler para um aplicativo Web em execução no modo integrado do IIS 7. Se você adicionar o assembly de manipulador ao diretório app_code para o aplicativo Web, não precisará incluir o nome do assembly no valor do atributo de tipo . O segundo <add> elemento define um mapeamento para solicitações PHP que usam o módulo 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>
Exemplo de código
Os exemplos a seguir adicionam um mapeamento FastCGI para um módulo PHP e, em seguida, adicionam um manipulador no site da Contoso que processará solicitações 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']"
Observação
Este segundo exemplo mostra como adicionar um novo mapeamento de manipulador de ASP.NET chamado SampleHandler.new para uma URL específica a um aplicativo Web.
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()