繁体   English   中英

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

[英]Mapping Subdomains to Areas in ASP.Net Core 3

我想要达到的目标

  • 如果可能,将我的正常域(例如example.com映射到任何区域。
  • 将我的子域(例如blog.example.com映射到名为blog的区域。

我发现了什么

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

来自 SO:

其他:

而且可能还有更多。

问题

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

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

附加信息

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

您说所有请求都通过nginx传递,但没有提及 nginx 重定向,您是否尝试使用nginx来执行此操作,只需使用/etc/nginx/nginx.conf将子域重定向到域。

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

BlogSite是您在 ASP.Net Core Server 上的区域路由。)

为了更新整个情况,随着 .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才能获得正确的默认路由匹配。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM