如何忽略asp.net中的路由表单url路由
-
07-07-2019 - |
题
我正在使用.NET 3.5 SP1框架,并且已在我的应用程序中实现了URL路由。我收到了javascript错误:
<代码>
错误:ASP.NET Ajax客户端框架无法加载。
资源解释为脚本,但使用MIME类型text / html进行传输。
ReferenceError:找不到变量:Sys
代码>
我认为是因为我的路由器正在拾取微软的axd文件而没有正确发送javascript。我做了一些研究,发现我可以使用 Routes.IgnoreRoute
,这应该允许我忽略下面的axd:
Routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
但是,当我将该行添加到我的Global.asax时,我收到此错误:
<代码> CS1061:'System.Web.Routing.RouteCollection'不包含'IgnoreRoute'的定义,并且没有可以找到接受类型'System.Web.Routing.RouteCollection'的第一个参数的扩展方法'IgnoreRoute'(你错过了吗?使用指令或程序集引用?) 代码>
我已经导入了 System.Web.Routing
命名空间,有什么想法吗?
解决方案
您不需要引用ASP.NET MVC。您可以使用实现IRouteHandler的 StopRoutingHandler 这样:
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中,“IgnoreRoute”和“IgnoreRoute”存在。方法似乎不是(即,不使用MVC)。这将获得与Haacked代码相同的结果,但稍微更清晰......
我想补充一点,您还需要确保IgnoreRoutes规则的顺序是正确的顺序,否则您的第一条路线将首先被应用,而您的IgnoreRoute将被忽略。
MapRoute和IgnoreRoute是System.Web.Mvc中的扩展方法---您是否正确引用了该程序集?