2010-05-26 87 views
15

我如何可靠性检测我的Azure应用程序是否在开发结构中运行,而不是在“云”中运行?如何检测Azure应用程序是否在开发结构中运行?

RoleEnvironment.IsAvailable对于两者都是true。我只想要在一种情况下是真的。

我在问这个,因为我希望我的库的用户能够在开发结构中免费使用我的库。因此,在配置文件中手动添加单独的标识符或标志并保留两个用于开发和部署的配置是不可行的。

回答

20

一个选项是看看RoleEnvironment.DeploymentId - 如果你在开发结构中运行,它应该有一个名称,如'deployment(n)',其中n是某个连续的数字。如果您正在生产中运行,则部署ID应该类似于Guid。

你可以做的另一件事是看角色的实例名称。在生产中,它应该以_0(代表实例0)结束。在开发结构中,它将结束于.0

编辑1/8/2013 - 意识到这个答案我在2年前给了很过时!现在也有 - 查看详情here

+1

+1用于更新您的答案 – Tom 2013-01-11 19:31:03

3

例如:

发展结构不完全模拟Windows Azure的负载均衡器的行为。例如,如果在Web角色实例中运行的代码从RoleEnvironment.StatusCheck事件处理程序中调用SetBusy方法以指示角色实例应该从负载平衡器的旋转中移出,您仍然可以从您的角色中访问角色浏览器,而其状态是RoleInstanceStatus.Busy。

天蓝色织物通常在one of the few fixed OS Images下运行。所以你也可以调查System.Environment。对于某些仅在蔚蓝结构中出现的模式(即与Windows Azure OS匹配的特定操作系统版本或类似的东西)。

16

在Windows Azure SDK 1.5引入了RoleEnvironment.IsEmulated静态布尔属性从代码来确定角色实例是否在Windows Azure计算模拟器中运行。 这些信息也可以传递给启动任务。有关史蒂夫马克思here的一篇很棒的文章。

+1

尽管它仅基于环境变量,但对于想要跳过基于此检查的许可的人员应该很容易设置此变量,因此IsEmulated将返回true 。 – 2011-10-04 06:59:45

相关问题