![](/img/trans.png)
[英]How can I manage robots.txt in Azure app service with a staging slot
[英]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.