Compartilhar via


Adicionar Manipuladores <add>

Visão geral

O elemento <add> da coleção <handlers> adiciona um manipulador à lista de manipuladores HTTP dos IIS (Serviços de Informações da Internet) 7.

Compatibilidade

Versão Observações
IIS 10.0 O elemento <add> não foi modificado nos IIS 10.0.
IIS 8.5 O elemento <add> não foi modificado nos IIS 8.5.
IIS 8.0 O elemento <add> não foi modificado nos IIS 8.0.
IIS 7.5 O elemento <add> não foi modificado nos IIS 7.5.
IIS 7.0 O elemento <add> da coleção <handlers> foi introduzido no IIS 7.0.
IIS 6,0 N/D

Instalação

O elemento <add> da coleção <handlers> está incluído na instalação padrão dos IIS 7.

Instruções

Como criar um mapeamento de manipulador para um manipulador do ASP.NET em um aplicativo dos IIS 7 em execução no modo integrado

  1. Abra o Gerenciador de Serviços de Informações da Internet (IIS):

    • Caso você esteja usando o Windows Server 2012 ou o Windows Server 2012 R2:

      • Na barra de tarefas, clique em Gerenciador do Servidor, em Ferramentas e em Gerenciador de Serviços de Informações da Internet (IIS).
    • Se você estiver usando o Windows 8 ou 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 em Gerenciador de Serviços de Informações da Internet (IIS).
    • Caso você esteja usando o Windows Server 2008 ou o Windows Server 2008 R2:

      • Na barra de tarefas, clique em Iniciar, vá para Ferramentas Administrativas e clique em Gerenciador de Serviços de Informações da Internet (IIS).
    • Se você estiver usando o Windows Vista ou Windows 7:

      • Na barra de tarefas, clique em Iniciar e, depois, em Painel de Controle.
      • Clique duas vezes em Ferramentas Administrativas e clique duas vezes em Gerenciador de Serviços de Informações da Internet (IIS).
  2. No painel Conexões, selecione a conexão do servidor que você deseja adicionar ao módulo nativo.

  3. No painel Página Inicial, clique duas vezes em Mapeamentos de Manipulador.
    Screenshot of the I I S Manager displaying the Default Web Site Home page. The Handler Mappings icon is highlighted.

  4. No painel Ações, clique em Adicionar Manipulador Gerenciado...

  5. Na caixa de diálogo Adicionar Manipulador Gerenciado, especifique o seguinte:

    • Caminho de 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.

      Screenshot of the Add Managed Handler dialog box.

  6. Clique em OK para fechar a caixa de diálogo Adicionar Manipulador Gerenciado.

Como criar um mapeamento do manipulador FastCGI

  1. Abra o Gerenciador de Serviços de Informações da Internet (IIS):

    • Caso você esteja usando o Windows Server 2012 ou o Windows Server 2012 R2:

      • Na barra de tarefas, clique em Gerenciador do Servidor, em Ferramentas e em Gerenciador de Serviços de Informações da Internet (IIS).
    • Se você estiver usando o Windows 8 ou 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 em Gerenciador de Serviços de Informações da Internet (IIS).
    • Caso você esteja usando o Windows Server 2008 ou o Windows Server 2008 R2:

      • Na barra de tarefas, clique em Iniciar, vá para Ferramentas Administrativas e clique em Gerenciador de Serviços de Informações da Internet (IIS).
    • Se você estiver usando o Windows Vista ou Windows 7:

      • Na barra de tarefas, clique em Iniciar e, depois, em Painel de Controle.
      • Clique duas vezes em Ferramentas Administrativas e clique duas vezes em Gerenciador de Serviços de Informações da Internet (IIS).
  2. No painel Conexões, clique no nome do servidor para o qual você deseja configurar mapeamentos do manipulador FastCGI.

  3. No painel Página Inicial, clique duas vezes em Mapeamentos de Manipulador.
    Screenshot of the I I S Manager window displaying the Server home page. The icon for Handler Mappings is highlighted.

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

  5. Digite a extensão de nome de arquivo, como as.php, na caixa Solicitar caminho, clique em FastCGIModule na lista suspensa Módulo, digite o caminho ao mecanismo de script (neste exemplo, PHP-CGI.exe) na caixa Executável e, em seguida, clique em OK.
    Screenshot of the Add Module Mapping dialog box.

  6. Na caixa de diálogo Adicionar Mapeamento de Módulo, clique em Sim.
    Screenshot of the Add Module Mapping information dialog box.

Configuração

Atributos

Atributo Descrição
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 false, 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ódulos para os quais 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 (,).
Valor Descrição
bitness32 Especifique o valor bitness32 quando o manipulador for um arquivo .dll de 32 bits e os IIS devem carregar o manipulador somente para processos de trabalho executados no modo WOW64 (simulação de 32 bits) em um sistema operacional de 64 bits.
bitness64 Especifique o valor bitness64 quando o manipulador for um arquivo .dll de 64 bits e os IIS devem carregar o manipulador somente para processos de trabalho executados no modo de 64 bits.
integratedMode Especifique o valor integratedMode quando o manipulador deve responder apenas a solicitações em pools de aplicativos configurados para usar o pipeline de processamento de solicitação integrado.
ISAPIMode Especifique o valor ISAPIMode quando o manipulador deve responder apenas às solicitações em pools de aplicativos configurados para usar o modo Clássico.
runtimeVersionv1.1 Especifique o valor runtimeVersionv1.1 quando o manipulador deve responder apenas às solicitações em pools de aplicativos configurados para usar o .NET Framework versão 1.1.
runtimeVersionv2.0 Especifique o valor runtimeVersionv2.0 quando o manipulador deve responder apenas às solicitações em pools de aplicativos configurados para usar o .NET Framework versão 2.0.
requireAccess Atributo de enumeração opcional.

Especifica o tipo de acesso que um manipulador requer para o recurso.

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.
Valor Descrição
Executar Especifica que o manipulador requer direitos para executar executáveis.

O valor numérico é 4.
Nenhuma Especifica que o manipulador não tem requisitos de acesso.

O valor numérico é 0.
Leitura Especifica que o manipulador requer permissões de leitura.

O valor numérico é 1.
Script Especifica que o manipulador requer direitos para executar scripts.

O valor numérico é 3.
Gravar Especifica que o manipulador requer permissões de gravação.

O valor numérico é 2.
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.
Valor Descrição
Directory Especifica que o mapeamento do manipulador se aplica a solicitações somente para pastas físicas no disco.

O valor numérico é 1.
Either Especifica que o mapeamento do manipulador se aplica a solicitações de arquivos físicos ou pastas em disco.

O valor numérico é 2.
File Especifica que o mapeamento do manipulador se aplica a solicitações somente para arquivos físicos no disco.

O valor numérico é 0.
Unspecified Especifica que o tipo de mapeamento não está especificado. O mapeamento do manipulador se aplica a solicitações independentemente de a solicitação ser mapeada para um arquivo físico ou pasta no disco. Use essa configuração ao mapear um manipulador para um nome de arquivo ou extensão de nome de arquivo que não existe no disco, como MyHandler.axd.

O valor numérico é 3.
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 é de 4194304 bytes.
scriptProcessor Atributo de cadeia de caracteres opcional.

Especifica o caminho físico do arquivo .dll da extensão ISAPI ou arquivo .exe CGI (Common Gateway Interface) que processa a solicitação.

O atributo scriptProcessor é necessário apenas para mapeamentos do manipulador de mapa de script. Ao mapear um manipulador para uma extensão ISAPI, você deve especificar ISAPIModule para o atributo modules. Ao mapear um manipulador para um arquivo CGI, você deve especificar CGIModule para o atributo modules.
type Atributo de cadeia de caracteres opcional.

Especifica o caminho do namespace de um manipulador gerenciado. O atributo type é necessário apenas para manipuladores gerenciados.
verb Atributo de cadeia de caracteres obrigatório.

Especifica os verbos HTTP aos quais o mapeamento do manipulador se aplica.

Elementos filho

Nenhum.

Exemplo de configuração

O exemplo a seguir contém dois elementos <add> que definem mapeamentos de manipulador. O primeiro elemento <add> define um manipulador SampleHandler para um aplicativo Web em execução no modo integrado dos IIS 7. Se você adicionar o assembly do manipulador ao diretório app_code para o aplicativo Web, não precisará incluir o nome do assembly no valor do atributo type. O segundo elemento <add> 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 do ASP.NET chamado SampleHandler.new a uma URL específica para 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()