23

我正在使用 .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导入了命名空间,有什么想法吗?

4

4 回答 4

40

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

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

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

于 2008-11-09T15:47:37.890 回答
8

一个老问题,但如果它仍然可以帮助任何人,这对我有用:

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

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

于 2011-10-25T13:02:49.377 回答
3

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

于 2009-04-05T22:54:59.567 回答
1

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

于 2008-11-07T20:09:21.950 回答