【问题标题】:How to route all subdomain on Net core 3.1如何在 Net core 3.1 上路由所有子域
【发布时间】:2020-07-14 17:45:13
【问题描述】:

当用户进入子域时,我想使用不同的控制器。我正在使用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?}");
});

【问题讨论】:

标签: c# asp.net-core asp.net-core-3.1


【解决方案1】:

RequireHost 与在任何地方添加[Host("...")] 属性几乎相同,只是它们仅适用于该路由。

主机规则的评估似乎发生在HostMatcherPolicy。应该将“*.domain.test”视为匹配所有子域,而不是域本身。如果您也希望匹配,则需要添加“domain.test”。

但是,您确实有第二条路线可以匹配所有内容。我怀疑您需要明确列出默认路由的有效主机。或者将你的控制器分成不同的区域,以确保它们只匹配预期的规则。

【讨论】:

  • 我明白了,谢谢,如果我不知道域怎么办?我想在任何域上路由所有子域
  • 似乎确实支持通配符子域。请注意,您需要将域与通配符子域分开列出。
猜你喜欢
  • 2021-03-03
  • 2021-03-12
  • 1970-01-01
  • 1970-01-01
  • 2020-09-23
  • 2020-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多