如何检测Azure开发结构中正在运行的应用程序?

我如何可靠地检测我的Azure应用程序是在运行结构中运行而不是在“云”中运行? RoleEnvironment.IsAvailable对两者都适用。我想要的只是一个案例中的事情。 我问这个是因为我希望我的库的用户能够在开发结构中免费使用我的库。因此,手动在配置文件中放置单独的标识符或标志,并为开发和部署保留两个配置是不可行的。     
已邀请:
一种选择是看看
RoleEnvironment.DeploymentId
- 如果你在开发结构中运行,它应该有一个名称,如'deployment(n)',其中n是一些序列号。如果您正在生产中运行,则部署ID应类似于Guid。 您可以做的另一件事是查看角色的实例名称。在生产中,它应以
_0
结尾(代表实例0)。在开发结构中,它将以
.0
结束 编辑1/8/2013 - 意识到我2年前给出的这个答案已经过时了!现在还有
RoleEnvironment.IsEmulated
- 在这里查看详细信息。     
Windows Azure 1.5 SDK引入了RoleEnvironment.IsEmulated静态bool属性,以从代码确定角色实例是否在Windows Azure计算模拟器中运行。 此信息也可以传递给启动任务。史蒂夫马克思在这里有一篇很好的文章。     
例如:   开发结构不能完全模拟Windows Azure负载均衡器的行为。例如,如果在Web角色实例中运行的代码从RoleEnvironment.StatusCheck事件处理程序中调用SetBusy方法,以指示角色实例应从负载均衡器的轮换中取出,您仍然可以从您的角色访问您的角色浏览器,其状态为RoleInstanceStatus.Busy。 此外,天蓝色织物通常在少数固定OS映像之一下运行。所以你也可以调查System.Environment。对于仅在azure结构中出现的某些模式(即与Windows Azure OS匹配的特定OS版本或类似的东西)。     
我已经使用了一段非常简单的技术 - 并且发现自己经常使用它。诀窍是在你的开发机器上设置一个环境变量,并使用基本的DOS批处理文件(或PowerShell)技术,如果存在该变量,跳过你不想要的东西。此环境变量不会出现在云中。 我在这里写了一篇博文:Azure常见问题解答:我可以创建一个仅在云中真正执行的启动任务吗?     

要回复问题请先登录注册