Que es routes.IgnoreRoute("{resource}.axd/{*pathInfo}")
No puedo encontrar ningún archivo .axd en mi proyecto, ¿puedo eliminar esta regla de ruta?
Que es routes.IgnoreRoute("{resource}.axd/{*pathInfo}")
No puedo encontrar ningún archivo .axd en mi proyecto, ¿puedo eliminar esta regla de ruta?
Los archivos .axd no existen físicamente. ASP.NET usa URL con extensiones .axd (ScriptResource.axd y WebResource.axd) internamente, y son manejadas por un HttpHandler.
Por lo tanto, debe mantener esta regla para evitar que ASP.NET MVC intente manejar la solicitud en lugar de dejar que el HttpHandler dedicado lo haga.
IgnoreRoute
en la configuración de enrutamiento de MVC es asegurarse de que MVC no intente manejar la solicitud. Esto se debe a que los.axd
puntos finales deben ser manejados por otro controlador HTTP (un controlador que no es parte de MVC) para poder entregar scripts.Algunos antecedentes
Si abre este archivo:
encontrará esto dentro del archivo:
Eso es básicamente decirle al tiempo de ejecución de Asp.NET: "Oye, amigo de asp.net, si llega una solicitud para WebResource.axd, usa AssemblyResourceLoader para procesar la solicitud".
Tenga en cuenta que WebResource.axd NO es un archivo, sino simplemente un mapa (si se me permite decirlo)
AssemblyResourceLoader
. Es el nombre con el que está registrado el controlador. En mi máquina, encontré los siguientes controladores .axd:Ok, entonces, ¿qué hace ese controlador?
El
AssemblyResourceLoader
sabe cómo buscar archivos incrustados dentro de un ensamblaje para que pueda servirlo (enviarlo al cliente, es decir, un navegador). Por ejemplo, en los formularios web de asp.net, si usa los controles de validación, estos dependen de algún javascript para mostrar los errores en la página web. Sin embargo, ese javascript está incrustado en un ensamblado. El navegador necesita javascript, por lo que verá esto en el html de la página:El
AssemblyResourceLoader
se encuentra el montaje en el que el Javascript está incrustado utilizando la información de la cadena de consulta y devolver el javascript.De vuelta a la pregunta
Entonces, para responder a la pregunta, ¿qué es:
Eso le dice al motor de enrutamiento que no procesaremos aquellas solicitudes que coincidan con ese patrón de ruta. En otras palabras, no procesaremos
.axd
solicitudes. ¿Por qué? Debido a sí MVC es un HttpHandler similar a.axd
y.aspx
y muchos otros controladores que se encuentran en el archivo web.config. El controlador MVC no sabe cómo procesar la solicitud, como buscar recursos integrados en un ensamblado,AssemblyResourceLoader
sabe cómo hacerlo. MVC sabe cómo hacer, bueno, todo lo que hace está más allá del alcance de esta pregunta y respuesta.fuente
La ruta con el patrón {resource} .axd / {* pathInfo} se incluye para evitar que las solicitudes de archivos de recursos web como WebResource.axd o ScriptResource.axd se pasen a un controlador.
Leer enlace: http://msdn.microsoft.com/en-us/library/cc668201%28v=vs.100%29.aspx
fuente
Eche un vistazo en el siguiente enlace: http://haacked.com/archive/2008/07/14/make-routing-ignore-requests-for-a-file-extension.aspx
fuente
Esos no son archivos (no existen en el disco), son solo nombres con los que se registran algunos controladores HTTP.
fuente