2008-11-07 18 views
22

Estoy usando el framework .NET 3.5 SP1 y he implementado el enrutamiento de URL en mi aplicación. Que estaba recibiendo errores de javascript:Cómo ignorar la ruta en los formularios asp.net enrutamiento url

Error: ASP.NET Ajax client-side framework failed to load.
Resource interpreted as script but transferred with MIME type text/html.
ReferenceError: Can't find variable: Sys

que creo que es porque mi enrutamiento está recogiendo los archivos de Microsoft y no AXD adecuadamente el envío por el javascript. Hice un poco de investigación y descubrió que podía usar Routes.IgnoreRoute, lo que debería permitir que me haga caso de los AXD, como a continuación:

Routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

Pero, cuando agrego que la línea a mi Global.asax consigo este error:

CS1061: 'System.Web.Routing.RouteCollection' does not contain a definition for 'IgnoreRoute' and no extension method 'IgnoreRoute' accepting a first argument of type 'System.Web.Routing.RouteCollection' could be found (are you missing a using directive or an assembly reference?)

Tengo el espacio de nombre System.Web.Routing importado, ¿Alguna idea?

Respuesta

39

No necesita hacer referencia a ASP.NET MVC. Usted puede utilizar el StopRoutingHandler que implementa IRouteHandler así:

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 es parte de ASP.NET MVC.

+0

Gracias, esto fue de gran ayuda. – Austin

+0

¿Cómo ignoraría los archivos '* .php' en ASP.NET Core (MVC 6)? ¡Es muy diferente! – jp2code

1

MapRoute e IgnoreRoute son métodos de extensión en System.Web.Mvc --- ¿tiene ese ensamblaje referenciado correctamente?

+0

No estoy usando MVC, por lo que no tengo ese ensamblaje al que se hace referencia. ¿Debo descargar el conjunto MVC por separado para poder usar IgnoreRoute, o debería ser parte de .NET 3.5 SP1? – Austin

3

Quisiera agregar que también necesita 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á ... bien ignorado.

8

Una cuestión de edad, pero en caso de que todavía ayuda a nadie, esto funcionó para mí:

routes.Ignore("{resource}.axd/{*pathInfo}"); 

El "Ignorar" existe método, mientras que en la norma ASP.NET aparece el método "IgnoreRoute" no (es decir, , no usando MVC). Esto logrará el mismo resultado que el código de Haacked, pero es un poco más limpio ...

+1

Es cierto, pero el método Ignore está disponible a partir de .Net 4. OP usa 3.5 SP1. –

Cuestiones relacionadas