C# 未找到MVC3资源-默认区域页面
这是一个奇怪的问题 我已经开发了几个月的一个web应用程序,直到两天前,它的工作状态还非常好 讨论中的基本结构包括多个区域(主要问题涉及“管理”区域)、MVC项目最高级别的默认控制器/视图以及Castle.Windsor DI管道 出乎意料的是,管理部分的默认页面现在显示一条“资源未找到”消息。此消息与我是通过RedirectToAction(登录后)还是通过菜单系统的标准返回视图(…)访问此页面无关 有没有人有任何理由说明这条路线不再有效?或者这里发生了什么 注意: -其他区域默认路线仍正确映射 -我可以使用地址栏中的直接url访问其他每一页。 -管理员的默认路由(以及我需要的8个其他路由)在路由表中显示良好 Global.asax文件:C# 未找到MVC3资源-默认区域页面,c#,asp.net-mvc-3,routing,global-asax,asp.net-mvc-areas,C#,Asp.net Mvc 3,Routing,Global Asax,Asp.net Mvc Areas,这是一个奇怪的问题 我已经开发了几个月的一个web应用程序,直到两天前,它的工作状态还非常好 讨论中的基本结构包括多个区域(主要问题涉及“管理”区域)、MVC项目最高级别的默认控制器/视图以及Castle.Windsor DI管道 出乎意料的是,管理部分的默认页面现在显示一条“资源未找到”消息。此消息与我是通过RedirectToAction(登录后)还是通过菜单系统的标准返回视图(…)访问此页面无关 有没有人有任何理由说明这条路线不再有效?或者这里发生了什么 注意: -其他区域默认路线仍正确映
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterModelBinders();
RegisterRoutes(RouteTable.Routes);
ServiceLocator.SetLocatorProvider(() => new WindsorServiceLocator(_container));
BoostrapContainer();
}
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" });
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "LogOn", id = UrlParameter.Optional }
);
}
行政区注册:
public override string AreaName
{
get
{
return "Admin";
}
}
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Admin_default",
"Admin/{controller}/{action}/{id}",
new { controller = "AdminDashboard", action = "AdminDashboard", id = UrlParameter.Optional }
);
}
- 值得注意的是,对于管理员注册,我已尝试使用以下命令显式指定命名空间: 新的{“xx.xx.xx.xx.Admin”}
context.MapRoute(
"Admin Dashboard Route",
"admin",
new { area = admin, controller = "admindashboard", action = "dashboard" }
);
然后把它放在你的注册区域
它应该能解决你的问题
问题是你的路线不够具体
它需要“Admin/something/something”,代码是“如果输入了“Admin”/blank,则与“Admin/something/something”路由不匹配,但与“default”路由匹配。它会查看您填写的段数,以及什么(或什么不是)在它们中。Hi George,我已经安装了Phil已经编写的NuGet调试器。虽然它在初始登录页面上工作得非常好,并且在我单击“登录”(或者从另一个页面)后显示了管理员默认存在的正确路由由于找不到资源,调试信息丢失?您不想使用作为“控件”的资源,而是希望它通过将其配置放置在global.asax中来拦截调用。由于您无法访问该页面,因此作为控件的资源在这里对您没有帮助。我们还需要查看您的所有配置路由和您试图点击的url。使用控制版本用路由更新问题。但是,我无法在中键入localhost/Admin url,因为它导致仍然找不到资源。但是从初始页面我可以看到路由已正确注册…您不同意吗?如果更容易阅读,我可以做屏幕截图。您的问题ms不是很清楚。键入
localhost/admin
是什么意思?这意味着什么?另外,您不希望使用控件版本。您希望使用它以拦截所有调用并将其发送到路由调试器页面(如果你阅读Phil Haack的说明,你需要在你的应用程序\u start
中注册该应用程序,然后重新运行该应用程序。当你键入你认为应该有效的URL时,它会告诉你为什么它不起作用。