我已在我的 MVC 3 项目中添加了一个区域。我似乎无法在非常简单的场景中使用路由。看来总是想去区解决一下。这是我的配置。启动时:
AreaRegistration.RegisterAllAreas();
IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Browse", action = "Index", id = UrlParameter.Optional }
And
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", action = "Index", id = UrlParameter.Optional }
);
}
}
在 web.config 中:
<authentication mode="Forms">
<forms loginUrl="~/Login" defaultUrl="~/Browse" timeout="60" cookieless="UseDeviceProfile" />
</authentication>
我正在使用 RouteDebugger 来尝试解决它。当我导航到登录页面时,调试器显示:
- AppRelativeCurrentExecutionFilePath:〜登录
- 管理员/{控制器}/{操作}/{id}不匹配当前请求
- {控制器}/{操作}/{id}Matches当前请求
- 匹配的路由:{controller}/{action}/{id}
到目前为止,一切都很好。但随后它显示了这一点:
- 使用路由“Admin/{controller}/{action}/{id}”生成的 URL:/Admin/Login?ReturnUrl=%2F
接下来我登录。我的登录/索引方法未命中,调试器显示:
- AppRelativeCurrentExecutionFilePath:〜登录
- 管理员/{控制器}/{操作}/{id}不匹配当前请求
- {控制器}/{操作}/{id}Matches当前请求
- 匹配的路由:{controller}/{action}/{id}
- 生成的 URL:/Admin/Login?ReturnUrl=%2FAdmin%2F使用路由“Admin/{controller}/{action}/{id}”登录
一方面它说它与管理路由不匹配,然后在生成的 URL 中它说它正在使用该路由。我很困惑。