Я не видел эту ветку MSDN - спасибо, что опубликовал это. Наиболее ценным является сравнение значений, возвращаемых при работе в среде разработки, с производством. Вариант 4, вероятно, не очень практичен, поскольку вы можете получить доступ либо к хранилищу dev, либо к реальному хранилищу из среды dev. Я использую Вариант 2, но, как вы заметили, об отказе от ответственности в будущих версиях SDK для проверки переменной среды, это также относится и к проверке идентификатора развертывания.

ьзуя MVC3, я хотел бы определить, запущен ли я локально или развернут в облаке?

Ответы на вопрос(3)

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 естьВот

 Simon12 нояб. 2013 г., 03:21
возможно, перефразируйте это, чтобы придать больше значения RoleEnvironment.IsEmulated поверх старого хака?
 Ohad Schneider17 сент. 2014 г., 12:39
Вероятно, следует отметить, чтоIsAvailable следует еще изучить, так какIsEmulated сгенерирует, если первый имеет значение false (среда роли не инициализирована).

ища существование Переменной среды.

Установите значение переменной среды в свойствах компьютера и прочитайте его, используя Environment.GetEnvironmentVariable («MyVariable»).

В Azure переменная не будет присутствовать, поэтому вызов вернет значение null.

Решение Вопроса

Это то, что я использую

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;
    }
}
 David Makogon29 мая 2011 г., 12:59
Если вы посмотрите на мой пост в блоге, как указано в моем ответе, вы увидите, что этот точный метод показан и объяснен.

Ваш ответ на вопрос