У меня есть приложение MVC 3 с несколькими встроенными областями, одна из областей - это моя административная часть моего сайта. Все работало просто отлично. Я хотел попробовать MvcContrib Portable Areas, чтобы сделать мое приложение более модульным, поэтому я установил MvcContrib, и после некоторых проб и ошибок я получил пару Portable областей и запустил их.
Затем я решил переместить мою область администратора в переносную область, поэтому я создал новый проект и отключил мою переносную область администратора. Мне пришлось переименовать мою локальную административную зону, чтобы она не конфликтовала. При перемещении некоторого кода до Admin Admin я решил, что не хочу головной боли перемещать все 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 с файлами в моем неработающем проекте, и они идентичны. Это не проблема с тем, как я настраивал свои маршруты, я думаю, что есть другая проблема, которую я не вижу.