Internet Information Services (IIS) 8 permite a los desarrolladores configurar con facilidad módulos nativos y de código administrado que procesan las solicitudes realizadas al servidor web. Para que los procesos de trabajo los carguen, los módulos tienen que estar configurados correctamente. Una configuración adecuada del módulo requiere que este tenga un nombre exclusivo y un tipo o una ruta válidos. Los módulos administrados pueden especificar si solo se invocan para solicitudes a aplicaciones ASP.NET o controladores administrados. Cuando se especifique, esta configuración puede optimizar el rendimiento.
Corregir las condiciones previas de un módulo
Las entradas de módulo tienen un atributo de condición previa opcional que contiene las condiciones para la carga del módulo. Por ejemplo, la condición previa puede especificar que IIS cargue el módulo solo para los grupos de aplicaciones que se ejecuten en modo integrado, solo para grupos de aplicaciones que se ejecuten en modo ISAPI o solo para grupos de aplicaciones que utilicen la versión de .NET Framework especificada. Esta última configuración posibilita la utilización de versiones independientes de módulos de motor administrados para grupos de aplicaciones que utilicen distintas versiones de tiempo de ejecución de CLR.
Este es un ejemplo de la sección globalModules del archivo ApplicationHost.config de una entrada de módulo que tiene un atributo preCondition:
<globalModules>
<add name="ManagedEngine"
image="%Windir%\Microsoft.NET\Framework\v2.0.50727\webengine.dll"
preCondition="integratedMode,runtimeVersionv2.0,bitness32"
/>
<globalModules>
Antes de cargar los módulos, el servidor valora la condición previa si esta está presente en la configuración. Si alguna de estas condiciones previas de carga devuelve False, el módulo no se carga.
Para solucionar este problema:
Haga una copia de seguridad del archivo ApplicationHost.config. Para ello, consulte la sección A.
Busque y corrija el atributo preCondition del módulo. Asegúrese de que está configurado correctamente y de que coincide con las características del grupo de aplicaciones o procesos de trabajo que utilizarán el módulo. Para buscar el atributo, consulte la sección B.
Una vez que las condiciones previas están corregidas, el módulo debería cargarse correctamente.
Hacer una copia de seguridad del archivo ApplicationHost.config
Para hacer una copia de seguridad del archivo ApplicationHost.config:
Abra una ventana Símbolo del sistema con permisos elevados. Haga clic en Inicio, seleccione Todos los programas, haga clic en Accesorios, haga clic con el botón secundario en Símbolo del sistema y, a continuación, elija Ejecutar como administrador.
Cambie al directorio %Windir%\system32\inetsrv.
Escriba appcmd add backup nombre de la copia de seguridad para hacer una copia de seguridad del archivo ApplicationHost.config.
Se creará un directorio con el nombre de la copia de seguridad que haya especificado en el directorio %Windir%\system32\inetsrv\backup. Si no especifica un nombre, Appcmd.exe creará un nombre de directorio de manera automática con la fecha y la hora actuales.
Buscar la entrada de módulo en el archivo ApplicationHost.config
Para buscar la entrada de módulo en el archivo ApplicationHost.config:
Abra una ventana Símbolo del sistema con permisos elevados. Haga clic en Inicio, seleccione Todos los programas, haga clic en Accesorios, haga clic con el botón secundario en Símbolo del sistema y, a continuación, elija Ejecutar como administrador.
Escriba cd %Windir%\system32\inetsrv\config
Escriba notepad applicationHost.config.
En el Bloc de notas, busque la sección globalModules en la sección system.webServer.
Busque la entrada de módulo que contiene el atributo preCondition y modifíquelo si tiene que hacerlo.
Guarde el archivo ApplicationHost.config y salga del bloc de notas.
Para obtener más información sobre la sección globalModules, consulte la documentación sobre IIS 8: agregar elemento para globalModules (esquema de configuración de IIS).
Target | Microsoft.Windows.InternetInformationServices.6.2.WebServer |
Category | Alert |
Enabled | True |
Event_ID | 2296 |
Event Source | Microsoft-Windows-IIS-W3SVC-WP |
Alert Generate | False |
Remotable | True |
Event Log | Application |
ID | Module Type | TypeId | RunAs |
---|---|---|---|
DS | DataSource | Microsoft.Windows.EventProvider | Default |
WA | WriteAction | Microsoft.Windows.Server.IIS.6.2.GenerateAlertAction.SuppressedByDescription | Default |
<Rule ID="Microsoft.Windows.InternetInformationServices.6.2.Module.has.an.invalid.precondition" Enabled="true" Target="Microsoft.Windows.InternetInformationServices.6.2.WebServer" ConfirmDelivery="false" Remotable="true" Priority="Normal" DiscardLevel="100">
<Category>Alert</Category>
<DataSources>
<DataSource ID="DS" TypeID="Windows!Microsoft.Windows.EventProvider">
<ComputerName>$Target/Host/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<LogName>Application</LogName>
<Expression>
<And>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">PublisherName</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">Microsoft-Windows-IIS-W3SVC-WP</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery>EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value>2296</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</Expression>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="WA" TypeID="Microsoft.Windows.Server.IIS.6.2.GenerateAlertAction.SuppressedByDescription">
<Priority>1</Priority>
<Severity>1</Severity>
<AlertMessageId>$MPElement[Name="Microsoft.Windows.InternetInformationServices.6.2.Module.has.an.invalid.precondition.AlertMessage"]$</AlertMessageId>
</WriteAction>
</WriteActions>
</Rule>