2011-06-16 63 views
1

我的意思是我的問題是:是否有可能檢測到哪個數據中心部署了worker角色?我試圖以編程方式確定我的工作者角色是否在北美和歐洲Azure數據中心之間,以便連接到位於相同地理位置的數據庫。Azure WorkerRole能檢測它的位置嗎?

例如,是否有環境變量?或者,也許我可以根據公共IP地址獲取這些信息?我願意接受任何替代方案。

我問這個問題的原因是因爲我想在NA數據中心中部署完全相同的工作者角色,並將其部署到歐盟,並最終在亞太地區部署,但我希望角色連接到最近的數據庫。我試圖避免在.CFG中手動指定連接字符串,因爲恐怕有一天有人會將代碼部署到EU,並忘記調整連接字符串。我的目標是讓所有的連接字符串在.CFG和我的工作者角色中足夠聰明,以根據其位置選擇適當的連接字符串。

回答

2

是的,但您必須使用Service Management API。要在沒有任何配置設置的情況下執行此操作,首先需要枚舉託管服務,然後爲每個服務調用獲取託管服務屬性(http://msdn.microsoft.com/zh-cn/library/ee460806.aspx)。您需要將您在RoleEnvironment中的DeploymentId與此響應中的PrivateId相匹配。那會告訴你你正在運行哪個託管服務。在同樣的迴應是位置。

現在,有一種更簡單的方法。只需將該值放入ServiceConfiguration中,並通過部署就會有所不同!

+0

我知道將它包含在配置中會更容易,但這正是我想要避免的:我擔心有人會在某一天犯錯。我喜歡你關於Service Management API的建議。我將不得不進行調查。在eman時間,如果你有一些示例代碼...我將不勝感激! – desautelsj 2011-06-16 15:26:28