Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何检测azure应用程序正在开发结构中运行?_Azure_Azure Compute Emulator - Fatal编程技术网

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

如何检测azure应用程序正在开发结构中运行?,azure,azure-compute-emulator,Azure,Azure Compute Emulator,我如何检测Azure应用程序是否在开发结构中运行,而不是在“云”中运行 RoleEnvironment.IsAvailable对两者都适用。我想要的东西只有一种情况是真实的 我这样问是因为我希望我的库的用户能够在dev fabric中免费使用我的库。因此,在配置文件中手动放置单独的标识符或标志,并为开发和部署保留两个配置是不可行的。例如: 开发结构没有完全模拟Windows Azure负载平衡器的行为。例如,如果web角色实例中运行的代码从RoleEnvironment.StatusCheck事

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

RoleEnvironment.IsAvailable对两者都适用。我想要的东西只有一种情况是真实的

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

例如:

开发结构没有完全模拟Windows Azure负载平衡器的行为。例如,如果web角色实例中运行的代码从RoleEnvironment.StatusCheck事件处理程序中调用SetBusy方法,以指示角色实例应退出负载平衡器的循环,则在角色状态为RoleInstanceStatus.Busy时,您仍然可以从浏览器访问角色


此外,azure fabric通常在以下条件下运行。因此,您还可以调查System.Environment。对于某些仅在azure fabric中出现的模式(即与Windows azure OS或类似操作系统匹配的特定操作系统版本)。

一个选项是查看
RoleEnvironment.DeploymentId
-如果您在开发结构中运行,它应该有一个类似于“部署(n)”的名称,其中n是一些序列号。如果在生产环境中运行,则部署id应类似于Guid

您可以做的另一件事是查看角色的实例名称。在生产中,它应该以
\u 0
结尾(表示实例0)。在dev结构中,它将以
.0


编辑2013年1月8日-意识到我两年前给出的答案已经过时了!现在还有
roleenEnvironment.I模拟的
-查看详细信息。

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


我在这里写了一篇博客:

WindowsAzure 1.5SDK引入了静态bool属性,以通过代码确定角色实例是否在WindowsAzure计算仿真器中运行。
此信息也可以传递给启动任务。史蒂夫·马克思(Steve Marx)有一篇关于这一点的好文章。

这是不可靠的,因为它只基于环境变量,对于希望跳过基于此检查的许可的人来说,应该能够轻松设置此变量,因此IsEmulated将返回true。