题
我尝试了ASP.NET 视的路由,并有当然偶然发现了一个问题。我有一个部分,/Admin/Pages/,这也是可以通过/Pages/,它不应该。什么可能我会丢失?
路由代码在全球性的。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/在开始。
问题是,它正在通过默认的路线,并得出:
控制器="网页" action="Index" id=""
这是完全一样的参数对于你的管理线路。
其他提示
路由问题喜欢这个,你应该试试我的 路线,调试器 会(使用只有在测试)。它可以帮助找出这些类型的问题。
P.S.如果你想的安全网页控制器,确保使用[授权]的属性。不只是依赖于URL授权。
你可以添加一个制约因素的默认规则,以便的{控制器}标记不可能是"网页"。
你在你的第一个路线{行动}令牌/参数,获取在冲突与设置的默认的作用。试着改变的参数名在您的途径,或者删除默认的行动的名称。
不隶属于 StackOverflow