【发布时间】:2011-07-02 01:24:13
【问题描述】:
我有一个 MVC 3 应用程序,其中内置了几个区域,其中一个区域是我网站的管理部分。一切正常。我想尝试 MvcContrib Portable Areas 以使我的应用程序更加模块化,因此我安装了 MvcContrib,经过反复试验,我得到了几个 Portable area 并运行起来。
然后我决定将我的管理区域移动到一个便携式区域,所以我创建了新项目并删除了我的管理便携式区域。我不得不重命名我的本地管理区域,以免发生冲突。在将一些代码移到 Admin PA 时,我决定不希望将所有 Telerik 和其他连接到我的管理区域的东西都移到我的管理区域。所以我把东西移回主项目区域并删除了 Admin 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 与我损坏的项目中的文件进行了比较,它们是相同的。这不是我如何设置路线的问题,我认为还有另一个我没有看到的问题。
【问题讨论】: