Cómo ignorar la ruta en asp.net formas de enrutamiento url
-
07-07-2019 - |
Pregunta
Estoy usando el framework .NET 3.5 SP1 y he implementado el enrutamiento de URL en mi aplicación. Recibía errores de JavaScript:
Recurso interpretado como script pero transferido con texto tipo MIME / html.
ReferenceError: no se puede encontrar la variable: Sys
Lo que creo es porque mi enrutamiento está recogiendo los archivos axd de microsoft y no enviando correctamente el javascript. Investigué un poco y descubrí que podía usar Routes.IgnoreRoute
, lo que debería permitirme ignorar el axd como se muestra a continuación:
Routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
Pero, cuando agrego esa línea a mi Global.asax obtengo este error:
Tengo el espacio de nombres System.Web.Routing
importado, ¿alguna idea?
Solución
No necesita hacer referencia a ASP.NET MVC. Puede usar el StopRoutingHandler que implementa IRouteHandler como entonces:
routes.Add(new Route("{resource}.axd/{*pathInfo}", new StopRoutingHandler()));
Esto es parte de .NET 3.5 SP1 y no requiere MVC. El método IgnoreRoutes es un método de extensión de conveniencia que forma parte de ASP.NET MVC.
Otros consejos
Una vieja pregunta, pero en caso de que todavía ayude a alguien, esto funcionó para mí:
routes.Ignore("{resource}.axd/{*pathInfo}");
El " Ignorar " existe el método, mientras que en ASP.NET estándar el "IgnoreRoute" parece que el método no lo hace (es decir, no usa MVC). Esto logrará el mismo resultado que el código de Haacked, pero es un poco más limpio ...
Solo me gustaría agregar que también debe asegurarse de que el orden de su regla IgnoreRoutes esté en el orden correcto; de lo contrario, su primera ruta se aplicará primero y su IgnoreRoute ... será ignorado.
MapRoute e IgnoreRoute son métodos de extensión en System.Web.Mvc --- ¿tiene ese ensamblado referenciado correctamente?