asp.net-mvc forms-authentication iis-7.5 static-files

asp.net mvc - Evite que IIS sirva archivos estáticos a través de la canalización ASP.NET



asp.net-mvc forms-authentication (4)

Las solicitudes de mis archivos de imagen css, js, se están procesando a través de la canalización ASP.NET. Pensé que IIS por defecto evitó esto, pero veo las solicitudes en mi punto de interrupción Application_AuthenticateRequest y no hay necesidad de autenticar realmente esas solicitudes. He visto enfoques conflictivos para cambiar este comportamiento. ¿Cuál es la mejor manera de hacerlo?


En VS2012 / MVC3 con Visual Studio Development Server habilitado, el RAMMFAR = falso no tiene ningún efecto. Cada solicitud de archivos estáticos todavía golpea al controlador de eventos Application_BeginRequest.

Cambié a IIS Express y vi la funcionalidad deseada.


En algún lugar, ya sea en su configuración de IIS o en un archivo web.config, tiene una asignación de controlador configurada para asignar estos archivos a su aplicación ASP.Net.

Intente eliminar su web.config y vea si todavía puede navegar a estos tipos de archivos desde IIS sin ASP.Net. Si eso falla, sabrás que es tu web.config; de lo contrario, tendrás que verificar la configuración de IIS.

Paso 2: vuelva a poner web.configs, luego elimine y vuelva a crear el sitio: ¿el mismo problema? Es una configuración en la raíz de IIS, lo que significa que se aplica a todos los sitios; verifique las asignaciones de controladores aquí.


Estoy adivinando aquí y sospecho que tiene la siguiente configuración configurada en su archivo web.config :

<modules runAllManagedModulesForAllRequests="true">

Esto significa que todas las solicitudes, incluidas las de contenido estático, están llegando a la tubería.

Cambie esta configuración a:

<modules runAllManagedModulesForAllRequests="false">

Esto es asumiendo que su aplicación se está ejecutando bajo ASP.NET 4.0 y MVC3.

Para que esto funcione, debe instalar KB980368 (requiere un reinicio) o Windows 2008R2 SP1 (que incluye este hotfix). La razón de esto se explica en este excelente artículo:

Cómo funciona ASP.NET MVC Routing y su impacto en el rendimiento de las solicitudes estáticas


Terminé agregando esto a mi web.config. Sé que todos mis archivos estáticos existirán en estas carpetas, por lo que funciona bien para mis necesidades.

<location path="scripts"> <system.web> <authentication mode="None" /> <authorization> <allow users="*" /> </authorization> </system.web> </location> <location path="styles"> <system.web> <authentication mode="None" /> <authorization> <allow users="*" /> </authorization> </system.web> </location> <location path="images"> <system.web> <authentication mode="None" /> <authorization> <allow users="*" /> </authorization> </system.web> </location>