Я пытаюсь создать приложение. NET Core MVC, которое обслуживает другой контент (который я определил как области) в зависимости от домена. Я использую ограничение, которое будет обслуживать соответствующую область на основе домена:
routes.MapRoute(
name: "Website1",
template: "{controller=Default}/{action=Index}/{id?}",
defaults: new { area = "Website1" },
constraints: new { _ = new DomainConstraint("website1.com") });
routes.MapRoute(
name: "Website2",
template: "{controller=Default}/{action=Index}/{id?}",
defaults: new { area = "Website2" },
constraints: new { _ = new DomainConstraint("website2.com") });
Это работает хорошо (пропустит DomainConstraint, потому что это работает), но проблема в том, что у меня есть 2 разных контроллера, использующих тот же маршрут, и я получаю эту ошибку:
AmbiguousActionException: несколько действий совпадают. Следующие действия соответствовали данным маршрута и удовлетворяли всем ограничениям:
Company.Web. Mvc .Sites.Areas.Website1.DefaultController.ThankYou Company.Web. Mvc .Sites.Areas.Website2.DefaultController .ThankYou
оба этих контроллера имеют следующие атрибуты маршрута (у разных сайтов иногда могут быть одинаковые URL):
[Route("thank-you")]
У меня вопрос, как я могу убедиться, чем при сопоставлении правильной области (например, Website1), запрос направляется на маршрут контроллера этой области (Website1.DefaultController) (спасибо)? Я попытался создать contstraint пространства имен, который наследуется от ActionMethodSelectorAttribute, но, очевидно, не работает для атрибутов маршрута.
В принципе мне нужны два разных домена, чтобы иметь возможность использовать один и тот же URL-адрес, который будет в двух разных контроллерах:
website1.com/thank-you
(Company.Web.Mvc.Sites.Areas.Website1.DefaultController.ThankYou)
website2.com/thank-you
(Company.Web.Mvc.Sites.Areas.Website2.DefaultController.ThankYou)
Заранее большое спасибо :)