将子域映射到 ASP.Net Core 3 中的区域

Mapping Subdomains to Areas in ASP.Net Core 3

我想达到的目标

我发现了什么

实际上有很多关于这个主题的帖子,尤其是将子域映射到区域。

来自 SO:

其他:

而且可能还有更多。

问题

但是有一个大问题,在 ASP.Net Core 3 中他们改变了很多东西,其中之一是一般的路由,参见 mircosoft's devblog。基本上他们改变了它所以现在一切都应该是端点。

所有 类 例如MvcRouteHandler 和接口,例如IRouter 现在基本上已经过时了,至少从我的理解来看是这样。在 GitHub 存储库中搜索和挖掘一段时间后,我找不到任何有用的东西。

附加信息

你说所有请求都传递给 nginx 但没有提到 nginx 重定向,你是否尝试使用 nginx 来做到这一点,只需使用 [= 将 sub-domain 重定向到域13=].

server {
   server_name sub.domain.co;
   location / {
   return 301 $scheme://domain.co/BlogSite$request_uri;
  }
}

BlogSite 是您在 ASP.Net 核心服务器上的区域路由。)

为了更新整个情况,随着 .Net Core 3 的发布,您现在可以使用 RequireHost 方法。

这看起来像下面这样:

app.UseEndpoints(endpoints =>
{
    endpoints.MapAreaControllerRoute(
                name: "Home",
                areaName: "Home",
                pattern: "{controller=Home}/{action=Index}")
             .RequireHost("localhost:5001", "sub.domain.com");
}

如果删除模式参数中的 Area,就像示例中那样,您就可以实现这一点。它仍然有些 hacky,但干净多了。 请注意,您必须在所有端点上放置 RequireHost 才能获得正确的默认路由匹配。