簡體   English   中英

在啟動時獲取 azure 應用服務插槽名稱?

[英]Getting the azure app service slot name on startup?

當 asp.net 核心進程啟動時,如何獲取我的應用服務的插槽(生產或暫存)的名稱。

HTTP_HOST 環境變量似乎沒有在啟動時設置,而且我沒有要檢查的 http 請求。

如果要獲取主機名,則可以使用環境變量WEBSITE_HOSTNAME來完成。

var hostName = Environment.GetEnvironmentVariable("WEBSITE_HOSTNAME");

如果在插槽環境中運行它,則將獲得值youwebsiteName-slotName.azurewebsites.net 或者,如果您在生產環境中運行它,則將獲得值youwebsiteName.azurewebsites.net

更新:

我們可以使用appsetting插槽執行此操作。

1.轉到插槽webApp並配置appsetting並檢查插槽設置。

在此處輸入圖片說明

2.請使用以下代碼獲取插槽名稱。

 string name = string.Empty;
 var sitName = Environment.GetEnvironmentVariable("APPSETTING_WEBSITE_SITE_NAME", EnvironmentVariableTarget.Process);
 var slotName = Environment.GetEnvironmentVariable("APPSETTING_KeyName", EnvironmentVariableTarget.Process); //APPSETTING_Test_Slot
 if (!string.IsNullOrEmpty(slotName))
 {
     name = sitName + "-" + slotName;
 }
 else
 {
     name = sitName;
 }

我認為海報想要做的是讓后台進程僅在其中一個部署槽中運行,並且在生產時運行。 即使這有效,您可能遇到的一個問題是,如果工作進程正在做某事,然后根據它所在的插槽檢查它是否應該繼續工作,然后交換,您可能會發現兩個進程都在運行。 如果您有這種在周期中期殺死它們的后台進程,您也會冒風險。

我所做的是有一個可以加速和減速過程的端點。 所以就在我交換之前,我在 prod 中旋轉一個,在交換之后,我將它旋轉回來。 這可以簡單地使用您設置為 true 或 false 的工作進程上的靜態變量來完成,並且您的事件循環每次都會檢查它,如果它為 false,它會在 2 分鍾或其他時間再次檢查。

然后我有一個每 5 分鍾運行一次的邏輯應用程序,將其設置為 true,所以我每次進行部署時都不必考慮它......如果應用程序回收,它會再次啟動。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM