2011-05-28 67 views

回答

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; 
    } 
} 
+0

如果你看過我的博客文章,如我的答案中所引用的,你會看到這種確切的技術顯示和解釋。 – 2011-05-29 10:59:11

22

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

+0

也許重新字這更加突出RoleEnvironment.IsEmulated在老黑客? – Simon 2013-11-12 02:21:47

+1

應該注意的是'IsAvailable'仍應該被檢查,因爲如果前者是假的(角色環境未初始化),IsEmulated將被拋出。 – 2014-09-17 10:39:33

2

您可以通過查找環境變量的存在以舊式的方式執行此操作。

在計算機屬性中設置環境變量的值,並使用Environment.GetEnvironmentVariable(「MyVariable」)讀取它。

在Azure上,變量將不存在,所以調用將返回null。

2

有幾個建議,在這裏 - http://social.msdn.microsoft.com/Forums/en-US/windowsazuredevelopment/thread/8fd96850-7a04-401b-89d5-ba153c1b4c51

  1. 環境變量
  2. deploymentID
  3. 計算機名稱
  4. 的Windows Azure存儲服務端點

看着他們,我想我我很想看看AZURE_DRIVE_DEV_PATH環境變量 - 但是有n個o保證這將在未來的SDK版本中起作用。

+0

我沒有看到該MSDN線程 - 感謝張貼。最有價值的是在開發環境與生產環境中運行時返回的值的比較。選項4可能不太實用,因爲您可以從開發環境訪問dev存儲或實際存儲。我使用選項2,但正如您所提到的有關未來SDK版本的免責聲明用於檢查環境變量,這也適用於檢查部署標識。 – 2011-05-29 11:21:24

相關問題