Возможный дубликат:
Как зарегистрировать контроллер, созданный в AREA.
У меня вопрос: можно ли сделать следующее?
У меня есть три области:
_Default
SiteOne
SiteTwo
Внутри каждой области у меня есть ApiController с тем же именем, но в разных пространствах имен:
MvcAppliaction.Areas._Default.Controllers.ValuesController
MvcAppliaction.Areas.SiteOne.Controllers.ValuesController
MvcAppliaction.Areas.SiteTwo.Controllers.ValuesController
У меня также есть значение тока (которое я бы хотел использовать) Area in configuration.
Я хотел бы сопоставить пользователя с контроллером в соответствующей области (которую я могу найти в конфигурации), если он входит в браузер:
/api/values
Например, если текущая Area в файле конфигурации - SiteOne, тогда этот запрос должен быть сопоставлен с контроллером MvcAppliaction.Areas.SiteOne.Controllers.ValuesController, но если я изменю текущую область в файле конфигурации на SiteTwo _Default, она должна быть сопоставлена с правильный контроллер.
PS. С контроллером MVC это просто, вам просто нужно установить свой маршрут:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
namespaces: new[] { "MvcApplication.Web.Areas." + SiteName + ".Controllers") }
);