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
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).
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.
En el panel Inicio, haga doble clic en Módulos.
En el panel Acciones, haga clic en Agregar módulo administrado.
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.
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.
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()