Asp.net MVC路由不明确,同一页面的两条路径
时间:2020-03-05 18:55:23 来源:igfitidea点击:
我正在尝试ASP.NET MVC路由,但是偶然发现了一个问题。我有一个/ Admin / Pages /部分,也可以通过/ Pages /访问它,但不应访问该部分。我可能会缺少什么?
global.asax中的路由代码:
public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( "Pages", // Route name "Admin/Pages/{action}/{id}", // URL with parameters // Parameter defaults new { controller = "Pages", action = "Index", id = "" } ); routes.MapRoute( "Default", // Route name "{controller}/{action}/{id}", // URL with parameters // Parameter defaults new { controller = "Home", action = "Index", id = "" } ); }
谢谢!
解决方案
回答
我建议在开始时为/ Pages /添加一个显式路由。
问题在于它正在由默认路由处理并派生:
控制器="页面"
行动="索引"
id =""
与管理员路由的参数完全相同。
回答
我们可以向默认规则添加约束,以使{Controller}标记不能为" Pages"。
回答
第一条路线{action}令牌/参数与默认操作的设置发生冲突。尝试更改路径中的参数名称,或者删除默认操作名称。
回答
对于这样的路由问题,我们应该尝试使用我的Route Debugger程序集(仅在测试中使用)。它可以帮助找出这些类型的问题。
P.S.如果要保护Pages控制器的安全,请确保使用[Authorize]属性。不要仅仅依靠URL授权。