Windows Azure — в файле конфигурации отсутствует диагностическая строка подключения для одной или нескольких ролей.

На портале Windows Azure Management Management при попытке отслеживать экземпляры я получаю следующую ошибку:

The configuration file is missing a diagnostic connection string for one or more roles. Monitoring can't be enabled for these roles.

У меня есть 2 роли на моем Сервисе.

MyApp.Cache нормально работает на графиках мониторинга.

MyApp.Website не показывает графики мониторинга. Вот почему я не думаю, что проблема в value="UseDevelopmentStorage=true".

Конфигурация моей службы выглядит следующим образом:

<Role name="MyApp.Website">
    <Instances count="2" />
    <ConfigurationSettings>      
      <Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" value="DefaultEndpointsProtocol=https;AccountName=AccountName;AccountKey=AccountKey" />      
    </ConfigurationSettings>
    </Role>
    <Role name="MyApp.Cache">
    <Instances count="2" />
    <ConfigurationSettings>
      <Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" value="UseDevelopmentStorage=true" />
      <Setting name="Microsoft.WindowsAzure.Plugins.Caching.NamedCaches" value="" />
      <Setting name="Microsoft.WindowsAzure.Plugins.Caching.Loglevel" value="" />
      <Setting name="Microsoft.WindowsAzure.Plugins.Caching.CacheSizePercentage" value="" />      
      <Setting name="Microsoft.WindowsAzure.Plugins.Caching.ConfigStoreConnectionString" value="DefaultEndpointsProtocol=https;AccountName=AccountName;AccountKey=AccountKey" />      
    </ConfigurationSettings>
</Role>

Мое определение службы таково:

<ServiceDefinition name="MyApp.Azure" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition" schemaVersion="2012-05.1.7">
  <WebRole name="MyApp.Website" vmsize="ExtraSmall">
    <Sites>
      <Site name="Web">
        <Bindings>
          <Binding name="Endpoint1" endpointName="Endpoint1" />
        </Bindings>
      </Site>
    </Sites>
    <Endpoints>
      <InputEndpoint name="Endpoint1" protocol="http" port="80" />
    </Endpoints>
    <Imports>
      <Import moduleName="Diagnostics" />
    </Imports>
    <LocalResources>
        <LocalStorage name="DiagnosticStore" sizeInMB="4096" cleanOnRoleRecycle="false"/>
    </LocalResources>    
  </WebRole>
  <WorkerRole name="MyApp.Cache" vmsize="ExtraSmall">
    <Imports>
      <Import moduleName="Diagnostics" />
      <Import moduleName="Caching" />
    </Imports>
    <LocalResources>
      <LocalStorage name="Microsoft.WindowsAzure.Plugins.Caching.FileStore" sizeInMB="4096" cleanOnRoleRecycle="false" />
    </LocalResources>
  </WorkerRole>
</ServiceDefinition>

person Dragos Durlut    schedule 13.06.2013    source источник
comment
Как выглядит ваш файл CSDEF?   -  person Igorek    schedule 13.06.2013
comment
@Igorek Igorek, я обновил свой вопрос.   -  person Dragos Durlut    schedule 13.06.2013
comment
Хм... Как дела? Вы устанавливаете флажок, чтобы обновить строку диагностического подключения с помощью учетной записи хранения во время публикации?   -  person Igorek    schedule 13.06.2013
comment
@Igorek Да, я проверяю флажок. Дело в том, что ошибка появляется не всегда.   -  person Dragos Durlut    schedule 13.06.2013
comment
Я бы попытался заменить строку DevelopmentStorage на всякий случай, чтобы избежать возможных проблем с заменой этого значения.   -  person Igorek    schedule 13.06.2013


Ответы (1)


Чтобы диагностика работала, необходимо импортировать модуль диагностики в файл .csdef и указать допустимую строку подключения в файле .cscfg.

В вашем случае вы правильно включили модуль диагностики, однако не указали допустимую строку подключения в файле .cscfg. Вам необходимо заменить «AccountName» на фактическое имя учетной записи, а «AccountKey» — на действительный ключ учетной записи. Для этого вам нужно создать учетную запись хранения Azure и скопировать сюда ее строку подключения.

Кроме того, даже если это не является частью вашего вопроса, вы не должны использовать «UseDevelopmentStorage = true» при развертывании решения. В основном он использует ваш локальный эмулятор хранилища в качестве учетной записи хранения Azure, которая недоступна в облаке. В рабочей роли также необходимо указать допустимую строку подключения к учетной записи хранения.

person Kunal Kapoor    schedule 17.07.2013
comment
Спасибо за ваш ответ. К сожалению, к тому времени, когда я внедрил автомасштабирование, Azure включил автомасштабирование в свой портал управления. - person Dragos Durlut; 25.07.2013