使用MVC3我想确定我是在本地运行还是部署到云中?如何确定我是在本地PC上还是在云上运行?
回答
这是我用
public static class Azure
{
private static bool m_IsRunningAzure = GetIsRunningInAzure();
private static bool GetIsRunningInAzure()
{
Guid guidId;
if (RoleEnvironment.IsAvailable && Guid.TryParse(RoleEnvironment.DeploymentId, out guidId))
return true;
return false;
}
public static bool IsRunningInAzure()
{
return m_IsRunningAzure;
}
private static bool m_IsRunningAzureOrDevFabric = GetIsRunningInAzureOrDevFabric();
private static bool GetIsRunningInAzureOrDevFabric()
{
return RoleEnvironment.IsAvailable;
}
public static bool IsRunningInAzureOrDevFabric()
{
return m_IsRunningAzureOrDevFabric;
}
}
RoleEnvironment.IsAvailable
告诉你,如果你在Windows Azure中运行,但它不区分真正的Windows Azure和本地开发模拟器。
我写了一个blog post,它显示了一个技巧来确定您是在真实还是在模拟Windows Azure中运行,当时是RoleEnvironment.IsAvailable == true
- 希望能够提供您需要的内容。
编辑:如果您想下正肮脏的代码,我在上述岗位描述,没有为什么该技术适用于任何的解释:
private bool IsRunningInDevFabric()
{
// easiest check: try translate deployment ID into guid
Guid guidId;
if (Guid.TryParse(RoleEnvironment.DeploymentId, out guidId))
return false; // valid guid? We're in Azure Fabric
return true; // can't parse into guid? We're in Dev Fabric
}
编辑2:我的答案是有点过时。现在有,这更直接使用。 MSDN文档是here
也许重新字这更加突出RoleEnvironment.IsEmulated在老黑客? – Simon 2013-11-12 02:21:47
应该注意的是'IsAvailable'仍应该被检查,因为如果前者是假的(角色环境未初始化),IsEmulated将被抛出。 – 2014-09-17 10:39:33
您可以通过查找环境变量的存在以旧式的方式执行此操作。
在计算机属性中设置环境变量的值,并使用Environment.GetEnvironmentVariable(“MyVariable”)读取它。
在Azure上,变量将不存在,所以调用将返回null。
- 环境变量
- deploymentID
- 计算机名称
- 的Windows Azure存储服务端点
看着他们,我想我我很想看看AZURE_DRIVE_DEV_PATH环境变量 - 但是有n个o保证这将在未来的SDK版本中起作用。
我没有看到该MSDN线程 - 感谢张贴。最有价值的是在开发环境与生产环境中运行时返回的值的比较。选项4可能不太实用,因为您可以从开发环境访问dev存储或实际存储。我使用选项2,但正如您所提到的有关未来SDK版本的免责声明用于检查环境变量,这也适用于检查部署标识。 – 2011-05-29 11:21:24
- 1. 确定我是在Cloudhub上运行还是在本地运行
- 2. 如何确定我的应用程序是在x86还是x64 Windows上运行?
- 3. 在sturtup上运行脚本还是在网络上运行? Ubuntu17.04
- 4. 如何在ASP.NET MVC中查看站点是在本地主机上还是在127.0.0.1上运行
- 5. Django/Python-我应该在本地分支上运行makemigrations,还是只在master上运行?
- 6. 在Flex中,可以确定代码是在Web还是AIR上运行?
- 7. 在本地PC上运行asp.net mvc时使用特定的web.config
- 8. 我的程序如何确定它是在32位还是在64位Windows上运行?
- 9. emacs,它是在笔记本电脑上还是在桌面上运行?
- 10. Bugzilla如何在本地PC上工作?
- 11. 如何在多核PC上运行php
- 12. 如何在PC群集上运行VMWare?
- 13. Red5在本地PC上
- 14. Azure WorkerRole在本地dev-fabric上运行,但不是在azure上
- 15. 确定在illumos/solaris上是否在控制台上运行
- 16. 如何知道我是在模拟器还是真正的手机上运行
- 17. 如何确定我的python脚本是否正在运行?
- 18. 离开NetBeans运行在vps上还是一样,还是应该只运行glassfish?
- 19. 本地PC到云
- 20. 如何确定码头集装箱是在远程码头机上运行还是在码头引擎中本地运行?
- 21. 如何在本地IP上运行MULE?
- 22. 如何判断我即将在群集上还是在“本地”模式下运行Hadoop串流作业?
- 23. 如何在.NET中分辨您是在x86还是在x64上运行?
- 24. 这是在本地还是远程运行?
- 25. 确定PHP是从shell还是在Apache中运行的方法?
- 26. 在运行时确定目标是模拟器还是手机
- 27. C# - 在运行时确定属性是Type还是Object实例?
- 28. 如何让php知道它运行在iOS还是MacOS上
- 29. 如何在不是“本地主机”的域上运行本地Rails实例?
- 30. 我应该在镜像回购还是原版上运行BFG?
如果你看过我的博客文章,如我的答案中所引用的,你会看到这种确切的技术显示和解释。 – 2011-05-29 10:59:11