簡體   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