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>