2011-06-16 78 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