使用MVC3,我想确定我是在本地运行还是部署到云端?
答案 0 :(得分:22)
RoleEnvironment.IsAvailable
告诉您是否在Windows Azure中运行,但它没有区分真正的Windows Azure和本地开发模拟器。
我写了一个blog post,它显示了一个技巧,可以确定你是否在真实模拟Windows Azure和模拟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 :我的回答有点过时了。现在有 RoleEnvironment.IsEmulated
,使用起来要简单得多。 MSDN文档为here
答案 1 :(得分:14)
这就是我使用的
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;
}
}
答案 2 :(得分:2)
通过寻找环境变量的存在,你可以用老式的方式做到这一点。
在计算机属性中设置环境变量的值,并使用Environment.GetEnvironmentVariable(“MyVariable”)读取它。
在Azure上,变量不会出现,因此调用将返回null。
答案 3 :(得分:2)
看着它们,我想我很想看看AZURE_DRIVE_DEV_PATH环境变量 - 但是不能保证这在将来的SDK版本中有效。