13

MVC3を使用していて、ローカルで実行しているか、クラウドにデプロイしているかを確認したいですか?

4

4 に答える 4

23

RoleEnvironment.IsAvailableは、Windows Azure で実行しているかどうかを示しますが、実際の Windows Azure とローカルの開発シミュレーターを区別しません。

実際の Windows Azure とシミュレートされた Windows Azure のどちらで実行しているかを判断するためのトリックを示すブログ投稿を書きましたRoleEnvironment.IsAvailable == true

編集:上記の投稿で説明した down-n-dirty コードが必要な場合は、この手法が機能する理由の説明はありません。

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
    }

EDIT 2 :私の答えは少し時代遅れです。がありRoleEnvironment.IsEmulated、はるかに簡単に使用できます。MSDN ドキュメントはこちら

于 2011-05-28T11:44:28.407 に答える
15

This is what I use

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;
    }
}
于 2011-05-29T10:50:33.563 に答える
2

ここにいくつかの提案があります-http://social.msdn.microsoft.com/Forums/en-US/windowsazuredevelopment/thread/8fd96850-7a04-401b-89d5-ba153c1b4c51

  1. 環境変数
  2. デプロイメントID
  3. コンピュータネーム
  4. WindowsAzureストレージサービスエンドポイント

それらを見ると、AZURE_DRIVE_DEV_PATH環境変数を調べたくなると思いますが、これが将来のSDKバージョンで機能するという保証はありません。

于 2011-05-29T10:47:11.870 に答える
2

環境変数の存在を探すことで、昔ながらの方法でそれを行うことができます。

コンピューターのプロパティで環境変数の値を設定し、Environment.GetEnvironmentVariable("MyVariable") を使用して読み取ります。

Azure では変数が存在しないため、呼び出しは null を返します。

于 2011-05-29T08:31:28.133 に答える