MVC3を使用していて、ローカルで実行しているか、クラウドにデプロイしているかを確認したいですか?
4 に答える
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 ドキュメントはこちら
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;
}
}
ここにいくつかの提案があります-http://social.msdn.microsoft.com/Forums/en-US/windowsazuredevelopment/thread/8fd96850-7a04-401b-89d5-ba153c1b4c51
- 環境変数
- デプロイメントID
- コンピュータネーム
- WindowsAzureストレージサービスエンドポイント
それらを見ると、AZURE_DRIVE_DEV_PATH環境変数を調べたくなると思いますが、これが将来のSDKバージョンで機能するという保証はありません。
環境変数の存在を探すことで、昔ながらの方法でそれを行うことができます。
コンピューターのプロパティで環境変数の値を設定し、Environment.GetEnvironmentVariable("MyVariable") を使用して読み取ります。
Azure では変数が存在しないため、呼び出しは null を返します。