Elemento de módulos <modules element>

Información general

El elemento <modules> define los módulos de código nativo y los módulos de código administrado registrados para una aplicación. Como parte del procesamiento de canalizaciones de solicitudes de Internet Information Services (IIS), IIS llama a cada módulo enumerado en el elemento <modules> en cada solicitud. Normalmente, se usan módulos para implementar funciones personalizadas, como seguridad, estadísticas y registro, o procesamiento de contenido personalizado, como agregar encabezados o pies de página personalizados.

El elemento <modules> contiene una colección de elementos <add>. Cada elemento define un módulo habilitado para la aplicación. Al habilitar un módulo, se le permite proporcionar su servicio para una aplicación determinada.

Si desea habilitar un módulo nativo, primero debe instalarlo en el servidor. Para obtener más información, consulte el elemento <globalModules>.

No es necesario instalar un módulo administrado; puede habilitarlo directamente para cada aplicación. Esto permite a las aplicaciones incluir sus módulos administrados directamente dentro de la aplicación registrándolos en el archivo Web.config de la aplicación y proporcionando la implementación en los directorios /BIN o /App_Code.

Compatibilidad

Versión Notas
IIS 10.0 El elemento <modules> no se modificó en IIS 10.0.
IIS 8.5 El elemento <modules> no se modificó en IIS 8.5.
IIS 8.0 El elemento <modules> no se modificó en IIS 8.0.
IIS 7.5 El elemento <modules> no se modificó en IIS 7.5.
IIS 7.0 El elemento <modules> se introdujo en IIS 7.0.
IIS 6,0 N/D

Configuración

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

Procedimientos

Adición de un módulo administrado a una aplicación

  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 haga clic en Panel de control.
      • En Panel de control, haga clic en Herramientas administrativas y, 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 Inicio y, luego, 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, expanda el nombre del servidor, expanda Sitios y, a continuación, vaya al sitio web o la aplicación a la que desea agregar un módulo administrado.

  3. En el panel Inicio, haga doble clic en Módulos.
    Screenshot of the Default Web Site Home page. The icon for Modules is highlighted.

  4. En el panel Acciones, haga clic en Agregar módulo administrado.

  5. En el cuadro de diálogo Agregar módulo administrado, escriba el nombre del módulo administrado en el cuadro Nombre y, a continuación, escriba o seleccione el tipo completo de .NET Framework del módulo en el cuadro Tipo.

  6. Seleccione la opción Invocar solo para solicitudes a aplicaciones ASP.NET o controladores administrados si desea que el módulo responda solo a las solicitudes administradas.
    Screenshot of the Add Managed Module dialog box.

  7. Haga clic en OK.

Configuración

Configure el elemento <modules> en el nivel de servidor en el archivo ApplicationHost.config y en el nivel de aplicación del archivo Web.config.

Atributos

Atributo Descripción
runAllManagedModulesForAllRequests Valor booleano opcional.

True si todos los módulos administrados pueden procesar todas las solicitudes, incluso si la solicitud no era para contenido administrado; de lo contrario, false.

Nota: en los sitios web de ASP.NET, el valor runAllManagedModulesForAllRequests anteriormente tenía que establecerse en true para admitir el enrutamiento. Sin embargo, una vez que IIS 7 se ha actualizado con un Service Pack, el valor de runAllManagedModulesForAllRequests se puede establecer false en o omitir al trabajar con el enrutamiento de ASP.NET. Para obtener más información, consulte Enrutamiento de ASP.NET en el sitio web de MSDN.

El valor predeterminado es false.
runManagedModulesForWebDavRequests Valor booleano opcional.

True si los módulos administrados pueden procesar solicitudes de WebDAV; de lo contrario, false.

El valor predeterminado es false.

Elementos secundarios

Elemento Descripción
add Elemento opcional.

Agrega un módulo a la colección de módulos.
clear Elemento opcional.

Quita todas las referencias a los módulos de la colección modules.
remove Elemento opcional.

Quita una referencia a un módulo de la colección modules.

Ejemplo de configuración

En el ejemplo se configura un módulo para una aplicación web que se ejecuta en modo integrado de IIS 7.

<configuration>
   <system.webServer>
      <modules>
         <add name="Header" type="Contoso.ShoppingCart.Header"/>
      </modules>
   </system.webServer>
</configuration>

Código de ejemplo

Nota:

Los ejemplos de este documento ilustran el uso de un ensamblado de código administrado que se ha almacenado en la caché global de ensamblados (GAC) de .NET. Antes de usar el código de estos ejemplos para implementar sus propios ensamblados, debe recuperar la información del ensamblado de GAC. Para ello, siga estos pasos:

  • En el Explorador de Windows, abra la ruta de acceso C:\Windows\assembly, donde C: es la unidad del sistema operativo.
  • Busque el ensamblado.
  • Haga clic con el botón secundario en el ensamblado y haga clic en Propiedades.
  • Copie el valor de Cultura; por ejemplo: Neutro.
  • Copie el número de Versión; por ejemplo: 1.0.0.0.
  • Copie el valor de Token de clave pública; por ejemplo: 426f62526f636b73.
  • Haga clic en Cancelar.

En los siguientes ejemplos de código se habilita un módulo administrado para un sitio web denominado Contoso. La propiedad name define el nombre CartHeader para el módulo, la propiedad type define el tipo administrado para el módulo, la propiedad preCondition define que IIS invoca el módulo solo para las solicitudes administradas.

AppCmd.exe

appcmd.exe set config "Contoso" -section:system.webServer/modules /+"[name='CartHeader',type='Contoso.ShoppingCart.Header',preCondition='managedHandler']"

C#

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample
{
   private static void Main()
   {
      using (ServerManager serverManager = new ServerManager())
      {
         Configuration config = serverManager.GetWebConfiguration("Contoso");
         ConfigurationSection modulesSection = config.GetSection("system.webServer/modules");
         ConfigurationElementCollection modulesCollection = modulesSection.GetCollection();

         ConfigurationElement addElement = modulesCollection.CreateElement("add");
         addElement["name"] = @"CartHeader";
         addElement["type"] = @"Contoso.ShoppingCart.Header";
         addElement["preCondition"] = @"managedHandler";
         modulesCollection.Add(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 config As Configuration = serverManager.GetWebConfiguration("Contoso")
      Dim modulesSection As ConfigurationSection = config.GetSection("system.webServer/modules")
      Dim modulesCollection As ConfigurationElementCollection = modulesSection.GetCollection

      Dim addElement As ConfigurationElement = modulesCollection.CreateElement("add")
      addElement("name") = "CartHeader"
      addElement("type") = "Contoso.ShoppingCart.Header"
      addElement("preCondition") = "managedHandler"
      modulesCollection.Add(addElement)

      serverManager.CommitChanges()
   End Sub
End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST/Contoso";
var modulesSection = adminManager.GetAdminSection("system.webServer/modules", "MACHINE/WEBROOT/APPHOST/Contoso");
var modulesCollection = modulesSection.Collection;

var addElement = modulesCollection.CreateNewElement("add");
addElement.Properties.Item("name").Value = "CartHeader";
addElement.Properties.Item("type").Value = "Contoso.ShoppingCart.Header";
addElement.Properties.Item("preCondition").Value = "managedHandler";
modulesCollection.AddElement(addElement);

adminManager.CommitChanges();

VBScript

Set adminManager = createObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST/Contoso"
Set modulesSection = adminManager.GetAdminSection("system.webServer/modules", "MACHINE/WEBROOT/APPHOST/Contoso")
Set modulesCollection = modulesSection.Collection

Set addElement = modulesCollection.CreateNewElement("add")
addElement.Properties.Item("name").Value = "CartHeader"
addElement.Properties.Item("type").Value = "Contoso.ShoppingCart.Header"
addElement.Properties.Item("preCondition").Value = "managedHandler"
modulesCollection.AddElement addElement

adminManager.CommitChanges()