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

roleenvironment.savailable对两者都是正确的。我想要仅在一种情况下真实的东西。

我之所以要这个,是因为我希望库的用户能够在开发面料中免费使用我的库。因此,在配置文件中手动将单独的标识符或标志放置在配置文件中,并保留两个用于开发和部署的配置是不可行的。

有帮助吗?

解决方案

一种选择是看一看 RoleEnvironment.DeploymentId - 如果您在开发式面料中运行,则应具有一个名称,例如“部署(n)”,其中n是某个顺序编号。如果您正在生产中运行,则部署ID应该类似于GUID。

您可以做的另一件事是查看角色的实例名称。在生产中,它应该以 _0 (表示实例0)。在开发面料中,它将以 .0

编辑1/8/2013 - 意识到我2年前给出的这个答案已经过时了!现在还有 RoleEnvironment.IsEmulated - 查看详细信息 这里.

其他提示

Windows Azure 1.5 SDK引入了 Roleenvironment.Semulted 静态bool属性从代码中确定角色实例是否在Windows Azure Compute模拟器中运行。此信息也可以传递给启动任务。史蒂夫·马克思有一篇很棒的文章 这里 关于那个。

例如:

开发结构并未完全模拟Windows Azure负载平衡器的行为。例如,如果在Web角色实例中运行的代码从RoleenVironment中调用SetBusy方法。StatuscheckEvent Handler指示应将角色实例从负载平衡器的旋转中取出,您仍然可以从您的角色中访问您的角色浏览器虽然其状态为coleinStancestatus.busy。

Azure织物通常在下面运行 少数固定的操作系统图像之一. 。因此,您还可以调查系统。环境。对于仅在Azure Fabric中发生的某些模式(即与Windows Azure OS匹配的特定OS版本或类似的OS版本)。

我已经使用了一段时间了一段非常简单的技术 - 发现自己经常使用它。诀窍是在开发机上设置环境变量,并使用基本的DOS批处理文件(或PowerShell)技术,如果存在该变量,请跳过您不需要的东西。该环境变量不会存在于云中。

我在这里写博客: Azure FAQ:我可以创建一个仅在云中真正执行的启动任务吗?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top