Получено исключение RoleEnvironmentException в Azure при доступе к RoleEnvironment.IsEmulated.

После того, как я развернул свою ASP.NET WebRole в Azure и заглянул в Azure Intellitrace, я заметил множество исключений RoleEnvironment, и они происходят в RoleEnvironment.IsEmulated.

Я думал, что в ServiceConfiguration чего-то не хватает, потому что предпоследним вызовом в stacktrace всегда является RoleEnvironment.GetConfigurationSettingValue.

Теперь я искал эту проблему, но не нашел ничего, кроме этой ссылки:

http://bretstateham.com/azure-serviceconfiguration-cscfg-changes%E2%80%A6/

Но моя конфигурация службы правильная. Я думаю, что настройка? IsSimulationEnvironment? должен быть создан Azure, но не в моем случае из-за исключений.

И я не могу поставить "?IsSimulationEnvironment?" Настройка вручную в моей конфигурации, потому что это не соответствует пространству имен xml конфигурации службы.

У кого-нибудь есть идея, как решить эту досадную проблему?


person HeManNew    schedule 28.09.2012    source источник
comment
Итак, это исключение, которое перехватывается внутри SDK, оно не мешает работе вашего приложения?   -  person Richard Astbury    schedule 01.10.2012
comment
Да, это правильно — это исключение перехватывается внутри SDK. Но это должно быть ненормально, я думаю, поэтому я подумал, что что-то в моей среде не так, или если кто-то также нашел эту проблему.   -  person HeManNew    schedule 02.10.2012
comment
Если вы запускаете его локально в эмуляторе, вы сможете найти конфигурацию с этим параметром (?IsSimulationEnvironment?) на локальном диске в таком месте, как: C:\Users\‹username›\AppData\Local\ dftmp\deployment‹sdkversion›(‹int›).config.xml. В этом файле есть такой параметр конфигурации, как: ‹Setting Name=WebRole1:?IsSimulationEnvironment? Значение = Истина / ›   -  person Jason Haley    schedule 10.05.2013


Ответы (1)


Я думаю, что ваша RoleEnvironment еще недоступна для вас. т.е. вы проверяете RoleEnvironment.IsEmulated до его инициализации...

Попробуй это,

while (!RoleEnvironment.IsAvailable)
     continue;//you can sleep sometime then continue
if (RoleEnvironment.IsEmulated)
{
  //Your code here
}
person NavaRajan    schedule 13.05.2013