English 中文(简体)
如何在ASP.NET表单URL路由中忽略路由
原标题:
  • 时间:2008-11-07 20:01:32
  •  标签:

我正在使用.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 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}");

“忽略”方法是存在的,在标准的ASP.NET中似乎没有“忽略路由”方法(即不使用MVC)。这将达到与Haacked的代码相同的结果,但稍微更清晰一些...

我想要补充的是,你还需要确保你的 IgnoreRoutes 规则的顺序正确,否则你的第一个路由将被优先应用,而你的 IgnoreRoute 将被忽略。

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





相关问题
热门标签