Использование MVC3, и я хотел бы определить, запущен ли я локально или развернут в облаке?
Как я могу определить, выполняю ли я локально на своем ПК или в облаке?
Ответ 1
Это то, что я использую
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
RoleEnvironment.IsAvailable
сообщает, что вы работаете в Windows Azure, но не различает реальную 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 здесь
Ответ 3
Вы можете сделать это старомодным способом, ища существование переменной среды.
Задайте значение переменной среды в свойствах компьютера и прочитайте ее с помощью Environment.GetEnvironmentVariable( "MyVariable" ).
В Azure переменная не будет присутствовать, поэтому вызов вернет значение null.
Ответ 4
Здесь есть несколько предложений - http://social.msdn.microsoft.com/Forums/en-US/windowsazuredevelopment/thread/8fd96850-7a04-401b-89d5-ba153c1b4c51
- Переменная среды
- deploymentID
- имя компьютера
- Конечная точка службы хранения Windows Azure
Посмотрев на них, я думаю, что у меня возникнет соблазн посмотреть переменную среды AZURE_DRIVE_DEV_PATH, но нет гарантии, что это будет работать в будущих версиях SDK.