Как маршрутизировать весь поддомен на Net core 3.1 - PullRequest
0 голосов
/ 14 июля 2020

Я хочу использовать другой контроллер, когда пользователи входят в поддомен. Я использую RequireHost .

Как это работает с любым доменом? Например, я использую domain.test только для разработки, но в производстве у меня есть другой.

Startup.cs

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Subdomain}/{action=Index}/{id?}").RequireHost("*.domain.test")


    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");
});

1 Ответ

1 голос
/ 21 июля 2020

RequireHost почти то же самое, что добавление атрибутов [Host("...")] повсюду, за исключением того, что они применяются только к этому маршруту.

Оценка правил хоста, похоже, происходит в HostMatcherPolicy . Что должно рассматривать "* .domain.test" как соответствующий всем поддоменам, но не самому домену. Вам нужно будет добавить «domain.test», если вы хотите, чтобы это совпадало.

Однако у вас есть второй маршрут, который может соответствовать всему. Я подозреваю, что вам нужно будет явно указать допустимые хосты для вашего маршрута по умолчанию. Или разделите контроллеры на разные области, чтобы убедиться, что они соответствуют ожидаемому правилу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...