2014-10-01 3 views
0

Если я создаю консольное приложение, и просто хочу, чтобы получить имя экземпляра, я стараюсь, чтобы получить его черезAccess Azure RoleEnvironment из консольного приложения

RoleEnvironment.CurrentRoleInstance.Id 

, но это уже не удается с внешним исключением:

обнаружения роль данные недоступны

и внутреннее исключение:

Инициализатор типа для «Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment» выбрал исключение . - Не удалось загрузить файл или сборку msshrtmi, Version = 2.4.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35 'или - одна из его зависимостей. Система не может найти указанный файл.

Есть ли другой способ получить имя экземпляра Azure программно или для моего консольного приложения нужны некоторые специальные права для доступа к RoleEnvironment?

+1

Очевидно, что есть зависимость от 'msshrtmi'. Это в ПКК? – sharptooth

+0

Я включил его сейчас с «копией на локальный». Внутреннее исключение исчезло, но внешнее исключение все еще присутствует. – ThisWillDoIt

ответ

0

Вы пытаетесь получить доступ к функциям RoleEnvironment, которые доступны, поскольку вы не работаете в среде Azure/AppFabrix. Я предлагаю вам проверить, работает ли среда Azure, используя элемент RoleEnvironment.IsAvailable.

Несколько более надежный метод будет обернуть идентификатор экземпляра в метод, что-то вроде ...

// Handcoded 
private string ApplicationInstanceId(){ 
    return RoleEnvironment.IsAvailable ? 
     RoleEnvironment.CurrentRoleInstance.Id : 
     "RunningLocally!"; 
} 
+0

Я попробовал это в разных Azure VM и RoleEnvironment.IsAvailable всегда возвращает false. – ThisWillDoIt