Это сообщение об ошибке часто появляется, когда вы используете области, и у вас есть то же имя контроллера внутри области и корня. Например, у вас есть два:
~/Controllers/HomeController.cs
~/Areas/Admin/Controllers/HomeController.cs
Чтобы решить эту проблему (как подсказывает вам сообщение об ошибке), вы можете использовать пространства имен при объявлении маршрутов. Так в основном определении маршрута в Global.asax
:
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional },
new[] { "AppName.Controllers" }
);
и в вашем ~/Areas/Admin/AdminAreaRegistration.cs
:
context.MapRoute(
"Admin_default",
"Admin/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional },
new[] { "AppName.Areas.Admin.Controllers" }
);
Если вы не используете области, кажется, что оба ваших приложения размещены в одном и том же приложении ASP.NET, и возникают конфликты, поскольку у вас одинаковые контроллеры, определенные в разных пространствах имен. Вам нужно будет настроить IIS для размещения этих двух как отдельных приложений ASP.NET, если вы хотите избежать подобных конфликтов. Попросите вашего хостинг-провайдера об этом, если у вас нет доступа к серверу.