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

Twe*_*nty 5 c# subdomain asp.net-mvc-areas asp.net-core asp.net-core-3.0

我想要达到的目标

  • example.com如果可能,将我的正常域映射到例如没有区域。
  • 将我的子域映射blog.example.com到一个名为blog.

我发现了什么

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

来自 SO:

其他:

而且可能还有更多。

问题

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

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

附加信息

  • 我正在使用SDK 3.0.100-preview6-012264,但试图尽快升级到 SDK 3.0.100-preview7-012821。
  • 我正在使用一个保留代理 (nginx),它将请求传递给 ASP.Net 核心服务器。

Twe*_*nty 3

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

这看起来像下面这样:

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

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