我的意思是:是否可以检测部署工作者角色的数据中心?我正在尝试以编程方式确定我的工作者角色是否位于北美和欧洲Azure数据中心,以便连接到位于同一地理位置的数据库。
例如,是否有环境变量?或者我可以根据公共IP地址获取此信息?我愿意接受任何替代方案。
我问这个问题的原因是因为我想在NA数据中心部署完全相同的工作者角色,并将其部署在EU中,最终也部署在APAC中,但我希望角色能够连接到最近的数据库。我试图避免在.CFG中手动指定连接字符串,因为我担心有一天会有人将代码部署到EU并忘记调整连接字符串。我的目标是让.CFG中的所有连接字符串和我的辅助角色足够聪明,根据其位置选择合适的连接字符串。
答案 0 :(得分:2)
是的,但您必须使用Service Management API。要在没有任何配置设置的情况下执行此操作,您首先要枚举托管服务,然后为每个调用Get Hosted Services Properties(http://msdn.microsoft.com/en-us/library/ee460806.aspx)。您需要将RoleEnvironment中的DeploymentId与此响应中的PrivateId相匹配。这将告诉您正在运行的托管服务。在同一个响应是位置。
现在,有一种更简单的方法。只需将值放在ServiceConfiguration中,然后通过部署使其有所不同!