Было найдено несколько типов, которые соответствуют контроллеру с именем "Главная" - в двух разных областях
В моем проекте есть две области. Теперь, когда я запускаю программу, я получаю эту ошибку:
Multiple types were found that match the controller named 'Home'. This can happen if the route that services this request ('{controller}/{action}/{id}') does not specify namespaces to search for a controller that matches the request. If this is the case, register this route by calling an overload of the 'MapRoute' method that takes a 'namespaces' parameter.
The request for 'Home' has found the following matching controllers:
BaseAdminMVC.Areas.BaseAdmin.Controllers.HomeController
BaseAdminMVC.Areas.TitomsAdmin.Controllers.HomeController
Я нашел здесь несколько источников: Имя нескольких контроллеров
Но я думаю, что это работает только для одной области.
В моем случае у меня есть два проекта в разных областях. Надеюсь, кто-то может сказать, что я должен сделать, чтобы решить эту проблему.
Вот файл Global.asax
:
public static void RegisterRoutes(RouteCollection routes)
{
string[] namespaces = new string[] { "BaseAdminMVC.Areas.BaseAdmin.Controllers", "BaseAdminMVC.Areas.TitomsAdmin.Controllers"};
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional },
namespaces
);
}
Кстати, у меня также есть контроллер ( "HomeController
" ) вне папки Area
. Это просто ссылки на два проекта BaseAdmin
и TitomsAdmin
.
Я пробовал это решение, но не работает:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
"BaseAdmin",
"BaseAdmin/{controller}/{action}",
new { controller = "Account", action = "Index" },
new string[] { "BaseAdminMVC.Areas.BaseAdmin.Controllers" }
);
routes.MapRoute(
"TitomsAdmin",
"TitomsAdmin/{controller}/{action}",
new { controller = "Home", action = "Index" },
new string[] { "BaseAdminMVC.Areas.TitomsAdmin.Controllers" }
);
Спасибо заранее!
Ответы
Ответ 1
Я не знаю, что произойдет, но этот код работает нормально:
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 },
new string[] { "BaseAdminMVC.Areas.TitomsAdmin.Controllers" }
);
}
Ответ 2
Я получил эту ошибку после выполнения переименования моего пространства имен/сборки проекта.
Если вы переименовали пространство имен/сборку, у вас может быть оставшаяся сборка /dll из предыдущего имени в папке bin. Просто удалите его оттуда, и он должен работать.
Ответ 3
Щелкните правой кнопкой мыши проект и выберите очистить проект. Или полностью полностью очистите каталог bin, а затем снова заново постройте. Это должно устранять любые оставшиеся сборки.