Compartir a través de


Adición de controladores agregados <>

Información general

El <add> elemento de la <handlers> colección agrega un controlador a la lista de controladores HTTP para Internet Information Services (IIS) 7.

Compatibility

Versión Notas
IIS 10.0 El <add> elemento no se modificó en IIS 10.0.
IIS 8.5 El <add> elemento no se modificó en IIS 8.5.
IIS 8.0 El <add> elemento no se modificó en IIS 8.0.
IIS 7.5 El <add> elemento no se modificó en IIS 7.5.
IIS 7.0 El <add> elemento de la <handlers> colección se introdujo en IIS 7.0.
IIS 6.0 N/A

Configuración

El <add> elemento de la <handlers> colección se incluye en la instalación predeterminada de IIS 7.

Cómo Hacer

Creación de una asignación de controlador para un controlador de ASP.NET en una aplicación IIS 7 que se ejecuta en modo integrado

  1. Abra el Administrador de Internet Information Services (IIS):

    • Si usa Windows Server 2012 o Windows Server 2012 R2:

      • En la barra de tareas, haga clic en Administrador del servidor, en Herramientas y, a continuación, en Administrador de Internet Information Services (IIS).
    • Si usa Windows 8 o Windows 8.1:

      • Mantenga presionada la tecla Windows , presione la letra X y, a continuación, haga clic en Panel de control.
      • Haga clic en Herramientas administrativasy, a continuación, haga doble clic en Administrador de Internet Information Services (IIS).
    • Si usa Windows Server 2008 o Windows Server 2008 R2:

      • En la barra de tareas, haga clic en Inicio, seleccione Herramientas administrativas y, a continuación, haga clic en Administrador de Internet Information Services (IIS).
    • Si usa Windows Vista o Windows 7:

      • En la barra de tareas, haga clic en Inicioy, a continuación, haga clic en Panel de control.
      • Haga doble clic en Herramientas administrativas y, a continuación, haga doble clic en Administrador de Internet Information Services (IIS).
  2. En el panel Conexiones , haga clic en la conexión de servidor a la que desea agregar el módulo nativo.

  3. En el panel Inicio , haga doble clic en Asignaciones de controlador.
    Captura de pantalla del Administrador de I I S que muestra la página principal del sitio web predeterminado. El icono Asignaciones del controlador está resaltado.

  4. En el panel Acciones , haga clic en Agregar controlador administrado...

  5. En el cuadro de diálogo Agregar controlador administrado , especifique lo siguiente:

    • Ruta de acceso de solicitud. Nombre de archivo o extensión de nombre de archivo que se va a asignar.

    • Escriba. Nombre de tipo (clase) del controlador administrado. Si el controlador se define en las carpetas app_code o bin de la aplicación, su nombre de tipo aparecerá en la lista desplegable.

    • Nombre. Nombre descriptivo.

      Captura de pantalla del cuadro de diálogo Agregar controlador administrado.

  6. Haga clic en Aceptar para cerrar el cuadro de diálogo Agregar controlador administrado .

Creación de una asignación de controladores de FastCGI

  1. Abra el Administrador de Internet Information Services (IIS):

    • Si usa Windows Server 2012 o Windows Server 2012 R2:

      • En la barra de tareas, haga clic en Administrador del servidor, en Herramientas y, a continuación, en Administrador de Internet Information Services (IIS).
    • Si usa Windows 8 o Windows 8.1:

      • Mantenga presionada la tecla Windows , presione la letra X y, a continuación, haga clic en Panel de control.
      • Haga clic en Herramientas administrativasy, a continuación, haga doble clic en Administrador de Internet Information Services (IIS).
    • Si usa Windows Server 2008 o Windows Server 2008 R2:

      • En la barra de tareas, haga clic en Inicio, seleccione Herramientas administrativas y, a continuación, haga clic en Administrador de Internet Information Services (IIS).
    • Si usa Windows Vista o Windows 7:

      • En la barra de tareas, haga clic en Inicioy, a continuación, haga clic en Panel de control.
      • Haga doble clic en Herramientas administrativas y, a continuación, haga doble clic en Administrador de Internet Information Services (IIS).
  2. En el panel Conexiones , haga clic en el nombre del servidor para el que desea configurar asignaciones de controladores de FastCGI.

  3. En el panel Inicio , haga doble clic en Asignaciones de controlador.
    Captura de pantalla de la ventana Administrador de I I S que muestra la página principal del servidor. El icono de Asignaciones de controlador está resaltado.

  4. En el panel Acciones , haga clic en Agregar asignación de módulos...

    Nota:

    Para que los pasos siguientes funcionen, debe haber instalado archivos binarios que ejecutarán la ruta de acceso del archivo o la extensión de nombre de archivo que especifique. En este ejemplo se usa una implementación de PHP disponible en el sitio web de Microsoft.

  5. Escriba la extensión de nombre de archivo, como as.php en el cuadro Ruta de acceso de solicitud , haga clic en FastCGIModule en la lista desplegable Módulo , escriba la ruta de acceso al motor de scripting (en este ejemplo, PHP-CGI.exe) en el cuadro Ejecutable y, a continuación, haga clic en Aceptar.
    Captura de pantalla del cuadro de diálogo Agregar asignación de módulos.

  6. En el cuadro de diálogo Agregar asignación de módulos , haga clic en .
    Captura de pantalla del cuadro de diálogo Agregar información de asignación de módulos.

Configuración

Attributes

Atributo Description
allowPathInfo Atributo Boolean opcional.

Especifica si el controlador procesa información de ruta de acceso completa en un URI, como contoso/marketing/imageGallery.aspx. Si el valor es true, el controlador procesa la ruta de acceso completa, contoso/marketing/imageGallery. Si el valor es false, el controlador procesa solo la última sección de la ruta de acceso, /imageGallery.

El valor predeterminado es false.
modules Atributo de cadena opcional.

Especifica el nombre del módulo o los módulos a los que desea asignar el nombre de archivo o el nombre de archivo con la extensión. Si especifica más de un valor, separe los valores con una coma (,).

El valor predeterminado es ManagedPipelineHandler.
name Atributo de cadena necesario.

Especifica el nombre único de la asignación del controlador.
path Atributo de cadena necesario.

Especifica el nombre de archivo o la extensión de nombre de archivo para la que se aplica la asignación del controlador.
preCondition Atributo de cadena opcional.

Especifica las condiciones en las que se ejecutará el controlador.

El atributo preCondition puede ser uno o varios de los siguientes valores posibles. Si especifica más de un valor, separe los valores con una coma (,).
Importancia Description
bitness32 Especifique el valor de bitness32 cuando el controlador es un archivo .dll de 32 bits y IIS debe cargar el controlador solo para los procesos de trabajo que se ejecutan en modo WOW64 (simulación de 32 bits) en un sistema operativo de 64 bits.
bitness64 Especifique el valor de bitness64 cuando el controlador es un archivo .dll de 64 bits y IIS debe cargar el controlador solo para los procesos de trabajo que se ejecutan en modo de 64 bits.
integratedMode Especifique el valor integratedMode cuando el controlador solo debe responder a las solicitudes de los grupos de aplicaciones configurados para usar la canalización integrada de procesamiento de solicitudes.
ISAPIMode Especifique el valor ISAPIMode cuando el controlador solo debe responder a las solicitudes de los grupos de aplicaciones configurados para usar el modo clásico.
runtimeVersionv1.1 Especifique el valor runtimeVersionv1.1 cuando el controlador solo debe responder a las solicitudes de los grupos de aplicaciones configurados para usar .NET Framework versión 1.1.
runtimeVersionv2.0 Especifique el valor runtimeVersionv2.0 cuando el controlador solo debe responder a las solicitudes de los grupos de aplicaciones configurados para usar .NET Framework versión 2.0.
requireAccess Atributo de enumeración opcional.

Especifica el nivel de acceso en el que se ejecutará un controlador.

El atributo requireAccess puede ser uno o varios de los siguientes valores posibles. Si especifica más de un valor, separe los valores con una coma (,). El valor predeterminado es Script.

Nota: Incluso si el valor requireAccess de un controlador no coincide con el nivel actual accessPolicy , sigue formando parte del conjunto configurado de controladores y se puede inicializar, aunque no se ejecutará.
Importancia Description
Execute Especifica que el controlador requiere derechos para ejecutar ejecutables.

El valor numérico es 4.
Ninguno Especifica que el controlador no tiene requisitos de acceso.

El valor numérico es 0.
Leer Especifica que el controlador requiere permisos de lectura.

El valor numérico es 1.
Guión Especifica que el controlador requiere derechos para ejecutar scripts.

El valor numérico es 3.
Escribir Especifica que el controlador requiere permisos de escritura.

El valor numérico es 2.
resourceType Atributo de cadena opcional.

Especifica el tipo de recurso al que se aplica la asignación del controlador.

El atributo resourceType puede ser uno de los siguientes valores posibles. El valor predeterminado es Unspecified.
Importancia Description
Directory Especifica que la asignación del controlador se aplica a las solicitudes solo para las carpetas físicas del disco.

El valor numérico es 1.
Either Especifica que la asignación del controlador se aplica a las solicitudes de archivos físicos o carpetas en disco.

El valor numérico es 2.
File Especifica que la asignación del controlador se aplica a las solicitudes solo para archivos físicos en el disco.

El valor numérico es 0.
Unspecified Especifica que no se especifica el tipo de asignación. La asignación del controlador se aplica a las solicitudes independientemente de si la solicitud se asigna a un archivo físico o carpeta en el disco. Use esta configuración al asignar un controlador a un nombre de archivo o una extensión de nombre de archivo que no exista en el disco, como MyHandler.axd.

El valor numérico es 3.
responseBufferLimit Atributo uint opcional.

Especifica el tamaño máximo, en bytes, del búfer de respuesta para un controlador de solicitudes.

El valor predeterminado es 4194304 bytes.
scriptProcessor Atributo de cadena opcional.

Especifica la ruta de acceso física de la extensión ISAPI .dll archivo o Common Gateway Interface (CGI) .exe archivo que procesa la solicitud.

El atributo scriptProcessor solo es necesario para las asignaciones del controlador de mapa de scripts. Al asignar un controlador a una extensión ISAPI, debe especificar ISAPIModule para el atributo modules. Al asignar un controlador a un archivo CGI, debe especificar CGIModule para el atributo modules.
type Atributo de cadena opcional.

Especifica la ruta de acceso del espacio de nombres de un controlador administrado. El atributo type solo es necesario para controladores administrados.
verb Atributo de cadena necesario.

Especifica los verbos HTTP para los que se aplica la asignación del controlador.

Elementos secundarios

Ninguno.

Ejemplo de configuración

En el ejemplo siguiente se incluyen dos <add> elementos que definen asignaciones de controlador. El primer <add> elemento define un controlador SampleHandler para una aplicación web que se ejecuta en modo integrado de IIS 7. Si agrega el ensamblado de controlador al directorio app_code de la aplicación web, no es necesario incluir el nombre del ensamblado en el valor del atributo de tipo . El segundo <add> elemento define una asignación para las solicitudes PHP que usan el 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>

Código de ejemplo

En los ejemplos siguientes se agrega una asignación de FastCGI para un módulo PHP y, a continuación, se agrega un controlador en el sitio web contoso que procesará las solicitudes 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']"

Nota:

En este segundo ejemplo se muestra cómo agregar una nueva asignación de controlador de ASP.NET denominada SampleHandler.new para una dirección URL específica a una aplicación 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()