我有一个 MVC 3 应用程序,其中内置了几个区域,其中一个区域是我网站的管理部分。一切都工作得很好。我想尝试 MvcContrib Portable Areas 以使我的应用程序更加模块化,因此我安装了 MvcContrib,经过一番尝试和错误后,我启动并运行了几个可移植区域。
然后我决定将我的管理区域移动到可移植区域,因此我创建了新项目并删除了我的管理可移植区域。我必须重命名本地管理区域,以免发生冲突。在将一些代码移至管理 PA 时,我决定不想因为将所有 Telerik 和其他已连接到管理区域的东西而感到头疼。所以我把东西移回到主项目区域并删除了管理 PA。
我重新连接了管理区域,并检查了与设置区域相关的所有内容。现在,在我的一生中,我无法加载主项目中的任何区域。我不断收到“找不到资源”的消息。错误信息。
我什至删除了对 MvcContrib 和 Portable Areas 的引用,但仍然没有成功。我已经束手无策了,因为我不知道如何调试它。我使用了自定义路由处理程序以及 Glimpse,但在引发错误时两者都不是很有用。
这是我的 global.asax 中的路线
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional }, // Parameter defaults
null,
new string[] { "CoolProject.Web.Controllers" }
);
这是我的管理区域注册文件中的路线
context.MapRoute(
"Admin_default",
"Admin/{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional },
new string[] { "CoolProject.Web.Areas.Admin.Contollers" }
);
这是我的 Global.asax
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional }, // Parameter defaults
new string[] { "CoolProject.Web.Controllers" }
);
}
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
InitializeContainer();
AppStart_Structuremap.Start();
SiteMapManager.SiteMaps.Register<XmlSiteMap>("AdminNavigation", sitemap => sitemap.LoadFrom("/Areas/Admin/AdminNavigation.sitemap"));
}
我已经针对类似的工作站点检查了我的设置,除了命名空间和类之外,一切都相同。
我正在Win 7 IIS7.5上开发
使用 Glimpse Routes 插件,我可以看到路线存在,但问题是 Global.axas 文件中的路线正在接管对这些区域的所有请求。
我需要对我的路线做什么才能让核心应用程序和区域相处?有趣的是我有另一个生产应用程序使用工作正常的区域。
更新....
我创建了一个新的 MVC 3 项目,添加了一个名为 Admin 的区域。然后我编辑了 AdminAreaRegistration.cs 和 Global.asax 文件以将命名空间包含在 MapRoute 语句中,对其进行编译并完美运行。我可以毫无问题地访问该区域。
然后,我将 Global.asax 和 AdminAreaRegistration.cs 与我损坏的项目中的文件进行了比较,它们是相同的。这不是我如何设置路线的问题,我认为还有另一个我没有看到的问题。