Partilhar via


Adicionar Manipuladores <>

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

  1. 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).
  2. No painel Conexões , clique na conexão do servidor à qual você deseja adicionar o módulo nativo.

  3. No painel Página Inicial, clique duas vezes em Mapeamentos de Manipulador.
    Captura de tela do Gerenciador I S exibindo a home page do site padrão. O ícone Mapeamentos do Manipulador está realçado.

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

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

      Captura de tela da caixa de diálogo Adicionar Manipulador Gerenciado.

  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 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).
  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.
    Captura de tela da janela I S Manager exibindo a home page do servidor. O ícone de Mapeamentos de Manipuladores está realçado.

  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 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.
    Captura de tela da caixa de diálogo Adicionar Mapeamento de Módulo.

  6. Na caixa de diálogo Adicionar Mapeamento de Módulo , clique em Sim.
    Captura de tela da caixa de diálogo Adicionar informações de Mapeamento de Módulo.

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 (,).
Value Description
bitness32 Especifique o valor bitness32 quando o manipulador for um arquivo .dll de 32 bits e o IIS deve 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 de .dll de 64 bits e o IIS deve 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 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.
Value Description
Executar Especifica que o manipulador requer direitos para executar executáveis.

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

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

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

O valor numérico é 3.
Escrever 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.
Value Description
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 de 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 é 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()