亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

.NET CORE 將 Api 子域路由到 Api 控制器

.NET CORE 將 Api 子域路由到 Api 控制器

C#
慕容708150 2021-11-21 16:13:08
我有阿比控制器和MVC在我的控制器。NET 核心應用程序。如何將子域api.mysite.com路由到僅指向Api控制器,并將dashboard.mysite.com路由到同一個項目中的所有 Web 應用程序?
查看完整描述

1 回答

?
手掌心

TA貢獻1942條經驗 獲得超3個贊

如果要在單個 ASP.NET Core 應用程序中實現此功能,可以執行以下操作:

  1. 在路徑/Api 上說使 Api 控制器可用。您可以使用路由、區域或應用程序分支來實現這一點。

  2. 使用能夠重寫 URL 的反向代理(例如 Win 上的 IIS、Linux 上的 Nginx)。配置反向代理,以便將到達api.mysite.com/path的請求作為/Api/path轉發到您的應用程序。

備注:如果你想在你的 Api 控制器中生成 URL,你應該從路徑中刪除/Api前綴以獲得正確的 URL(當然你必須配置你的反向代理以附加必要的標頭,如X-Forwarded-Host等)為此,您可以使用這個簡單的中間件。

更新

正如評論中所討論的,在這種情況下,應用程序分支似乎是最佳解決方案,因為它為 MVC 和 API 應用程序部分啟用了單獨的管道。

實際上,定義分支非常容易。您需要做的就是在Startup類的Configure方法中的主管道的開頭放置一個Map調用:

public void Configure(IApplicationBuilder app)

{

    app.Map("/Api", BuildApiBranch);


    // middlewares for the mvc app, e.g.

    app.UseStaticFiles();


    // some other middlewares maybe...


    app.UseMvc(...);

}


private static void BuildApiBranch(IApplicationBuilder app)

{        

    // middlewares for the web api...


    app.UseMvc(...);

}

現在,當請求到達并且其路徑以/Api開頭時,請求會“偏轉”并通過分支管道(在BuildApiBranch方法中定義)而不是通過主管道(在Configure方法中定義,在Map調用之后) .

要記住的一些事情:

  • 當請求被分支“捕獲”時,前綴/ApiHttpContext.Request.Path屬性中刪除(并附加到HttpContext.Request.PathBase)。所以你需要在UseMvc方法中定義 API 路由就好像請求路徑根本沒有前綴一樣。

  • 使用此代碼,您有兩個單獨的管道,但它們共享在Startup.ConfigureServices 中注冊的組件。如果這是不希望的,可以為每個管道創建單獨的 DI 容器。然而,這是一個有點高級的話題。


查看完整回答
反對 回復 2021-11-21
  • 1 回答
  • 0 關注
  • 242 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號