我在MVC 3项目中添加了一个区域.我似乎无法通过一个非常简单的场景来处理路由.它似乎总是希望解决该地区.这是我的配置.在启动时:
AreaRegistration.RegisterAllAreas(); IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( "Default","{controller}/{action}/{id}",new { controller = "Browse",action = "Index",id = UrlParameter.Optional }
和
public class AdminAreaRegistration : AreaRegistration { public override string AreaName { get { return "Admin"; } } public override void RegisterArea(AreaRegistrationContext context) { context.MapRoute( "Admin_default","Admin/{controller}/{action}/{id}",new { controller = "Users",id = UrlParameter.Optional } ); } }
在web.config中:
<authentication mode="Forms"> <forms loginUrl="~/Login" defaultUrl="~/Browse" timeout="60" cookieless="UseDeviceProfile" /> </authentication>
我正在使用RouteDebugger来尝试解决它.当我导航到Login页面时,调试器显示:
> AppRelativeCurrentExecutionFilePath:〜登录
> Admin / {controller} / {action} / {id}与当前请求不匹配
> {controller} / {action} / {id}匹配当前请求
>匹配路线:{controller} / {action} / {id}
到现在为止还挺好.但它显示了这一点:
>生成的URL:/ Admin / Login?ReturnUrl = /使用路径“Admin / {controller} / {action} / {id}”
> AppRelativeCurrentExecutionFilePath:〜登录
> Admin / {controller} / {action} / {id}与当前请求不匹配
> {controller} / {action} / {id}匹配当前请求
>匹配路线:{controller} / {action} / {id}
>生成的URL:/ Admin / Login?ReturnUrl = / Admin / Login使用路径“Admin / {controller} / {action} / {id}”
一方面它说它与Admin路由不匹配,然后在生成的URL中它表示它正在使用该路由.我很难过.
解决方法
尝试将带有预定义值的area参数添加到路由定义中…例如,而不是:
context.MapRoute( "Admin_default",id = UrlParameter.Optional } );
使用:
context.MapRoute( "Admin_default",new { area = "Admin",controller = "Users",id = UrlParameter.Optional } );
让我知道它是否有帮助……问候