Dot-Net

跨環境的 Azure Web 角色配置設置

  • January 19, 2014

在 Azure 之前發布:

在使用 Azure 之前,我們只有位於不同環境(測試、暫存和生產等)中的只讀配置文件。在發布期間,所有應用程序文件(無配置文件)都將部署到相關環境中。然後,應用程序文件將讀取環境的配置文件以獲取連接字元串和其他特定於環境的詳細資訊。我認為這是一個非常標準的設置?

Azure 之後發布:

現在我們正在將我們的 Web 應用程序遷移到 Azure Web 角色。Web 角色使用ServiceConfiguration.Cloud.cscfgServiceConfiguration.Local.cscfg文件。

發佈到雲服務時,需要知道連接字元串。如果我們要發佈到一個測試雲服務,那麼ServiceConfiguration.Cloud.cscfg需要進行相應的編輯。如果我們要發佈到暫存或生產雲服務,則ServiceConfiguration.Cloud.cscfg需要進一步更改。

我更願意在開發人員進行部署時將他們從連接字元串中抽像出來。這可以防止錯誤指向不正確的環境(這可能會產生巨大的影響)。如何才能做到這一點?

我知道可以在 Azure 管理門戶中更改這些配置設置,但是將此步驟包含在發布過程中意味著開發人員需要訪問管理門戶,這不是一個理想的情況,因為仍有餘地錯誤(加上對管理門戶的“開放”訪問)。

更新:

我發現您可以通過添加更多(和重命名)來管理您的服務配置文件:

在此處輸入圖像描述

然後通過一起選擇正確的雲服務(黑色)和正確的服務配置(紅色箭頭),開發人員不需要了解配置細節:

在此處輸入圖像描述

仍然存在開發人員在部署到雲服務時選擇錯誤的服務配置的問題(但也許這可以自動化到腳本中以防止這種情況發生?)

我的主要煩惱是環境類型(藍色箭頭)。這對我現在沒有用了。

最好的辦法是創建多個雲部署項目,每個環境一個,這樣每個項目都有不同的 ServiceConfiguration。

在我的應用程序中,我有 3 個應用程序項目(1 個 WebRole 和 2 個 Worker Role)

然後我們有 6 個雲部署項目,每個目標環境一個。每個部署項目都包含相同的 Web Role & Worker Roles,但具有不同的cscfg&csdef文件。

解決方案組織

在應用程序級別,app.config 和 web.config 文件通過使用SlowCheetah的配置轉換進行處理。基本上,對於每個部署,您在配置管理器中都有不同的建構配置。所以我有, , , , ,而不僅僅是Debugand ,Release``Debug``QA``Uat``Test``SAndbox``Production

引用自:https://stackoverflow.com/questions/17449389