如何在asp.net表单中忽略路由url路由

本文关键字:路由 url 表单 asp net | 更新日期: 2023-09-27 17:48:50

我使用的是.NET 3.5 SP1框架,并且在我的应用程序中实现了URL路由。我收到javascript错误:

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

我相信这是因为我的路由选择了microsoft axd文件,而没有正确发送javascript。我做了一些研究,发现我可以使用Routes.IgnoreRoute,这应该允许我忽略下面的axd:

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

但是,当我将该行添加到我的Global.asax时,我会得到以下错误:

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?)

我已经导入了System.Web.Routing命名空间,有什么想法吗?

如何在asp.net表单中忽略路由url路由

您不需要引用ASP.NET MVC。您可以使用StopRoutingHandler来实现IRouteHandler,如下所示:

routes.Add(new Route("{resource}.axd/{*pathInfo}", new StopRoutingHandler()));

这是.NET 3.5 SP1的一部分,不需要MVC。IgnoreRoutes方法是一种方便的扩展方法,它是ASP.NET MVC的一部分。

这是一个老问题,但如果它仍然能帮助任何人,这对我来说很有效:

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

"Ignore"方法存在,而在标准ASP.NET中,"IgnoreRoute"方法似乎不存在(即,不使用MVC)。这将实现与Haacked的代码相同的结果,但稍微干净一些。。。

我只想补充一点,您还需要确保IgnoreRoutes规则的顺序正确,否则您的第一个路由将首先应用,而IgnoreRoade将。。。很可能会被忽略。

MapRoute和IgnoreRoute是System.Web.Mvc中的扩展方法--您是否正确引用了该程序集?