<módulos runAllManagedModulesForAllRequests = "true" /> Significado

133

Quería saber cuál es el significado de

<modules runAllManagedModulesForAllRequests="true" />

Estoy usando IIS 7.5 y tengo una aplicación web simple. ¿Debo escribir esto en mi archivo web.config? También he escrito algunos manejadores http para la llamada jquery ajax. Estoy usando autenticación de formulario y asp.net 4.0.

¿Cómo puedo determinar qué módulo debo ejecutar y cuál no?

शेखर
fuente

Respuestas:

122

Condiciones previas de los módulos:

El motor central de IIS utiliza condiciones previas para determinar cuándo habilitar un módulo en particular. Las razones de rendimiento, por ejemplo, pueden determinar que solo desea ejecutar módulos administrados para solicitudes que también van a un controlador administrado. La condición previa en el siguiente ejemplo ( precondition="managedHandler") solo habilita el módulo de autenticación de formularios para solicitudes que también son manejadas por un manejador administrado, como solicitudes a archivos .aspx o .asmx:

<add name="FormsAuthentication" type="System.Web.Security.FormsAuthenticationModule" preCondition="managedHandler" />

Si elimina el atributo precondition="managedHandler", la Autenticación de formularios también se aplica al contenido que no es administrado por los manejadores administrados, como .html, .jpg, .doc, sino también para las extensiones ASP (.asp) o PHP (.php) clásicas. Consulte " Cómo aprovechar IIS Integrated Pipeline " para ver un ejemplo de cómo habilitar que los módulos ASP.NET se ejecuten para todo el contenido.

También puede usar un acceso directo para permitir que todos los módulos administrados (ASP.NET) se ejecuten para todas las solicitudes en su aplicación, independientemente de la " managedHandler" condición previa.

Para permitir que todos los módulos administrados se ejecuten para todas las solicitudes sin configurar cada entrada de módulo para eliminar la " managedHandler" condición previa, use la runAllManagedModulesForAllRequestspropiedad en la <modules>sección:

<modules runAllManagedModulesForAllRequests="true" />    

Cuando utiliza esta propiedad, la " managedHandler" condición previa no tiene efecto y todos los módulos administrados se ejecutan para todas las solicitudes.

Copiado de la descripción general de los módulos IIS: condiciones previas

Kapil Khandelwal
fuente
¿Es bueno ejecutar todos los modelos para toda la solicitud o seré más específico allí? ¿Esto afecta la velocidad de la aplicación?
शेखर
2
Sí, habrá un problema de rendimiento. Debería usar la condición previa en su lugar.
Kapil Khandelwal
3
entonces, ¿cómo debo decidir qué módulo debo usar y cuál no?
शेखर
66
Una pregunta de seguimiento. Veo que también es posible habilitar módulos separados, en lugar de todo. Vea mi pregunta ( stackoverflow.com/questions/20998816/… ), la solución que había que agregar <modules runAllManagedModulesForAllRequests="true">. Pero ahora veo que podría crear gastos generales. Entonces, ¿hay un módulo específico responsable que pueda habilitar para obtener el punto "." en MVC WebAPI Url, en lugar de habilitarlos a todos con <modules runAllManagedModulesForAllRequests="true">? ¿Es por ejemplo el módulo "Autorización Url"?
Yves Schelpe
agregar la sección de etiqueta de módulos funciona para mí. Uso MVC 5, .net framework 4.5.0, IIS 7 y Windows Server 2008
gavin
-9

agregue el siguiente código en web.config

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true" />
</system.webServer> 
hossein.sharifipour
fuente
44
¿Por qué me gustaría agregar?
शेखर