Исключение при вызове CacheDiagnostics.ConfigureDiagnostics из рабочей роли с кэшированием 2.1

Я установил Windows Azure Caching 2.1.0.0 из Nuget и настроил сбор данных диагностики клиентской библиотеки для рабочей роли с помощью Azure SDK 2.1, следуя инструкциям в это ТАК ответ.

К сожалению, когда я запускаю приложение в среде разработки, я получаю следующее исключение: я не понимаю, почему оно жалуется на файл конфигурации. Я искал эту ошибку, но не нашел ничего, относящегося к моему делу.

Microsoft.ApplicationServer.Caching.DataCacheException was caught
ErrorCode=9004
HelpLink=http://go.microsoft.com/fwlink/?LinkId=164049
HResult=-2146233088
Message=ErrorCode<ERRCMS0004>:SubStatus<ES0001>:Configuration file
(file name:"{0}") not found.
Source=Microsoft.ApplicationServer.Caching.Core
SubStatus=-1
StackTrace:
   at Microsoft.ApplicationServer.Caching.ConfigFile.
     ThrowException(Int32 errorCode)
   at Microsoft.ApplicationServer.Caching.AzureCommon.
     MemcacheUtility.GetRoleConfigPath()
   at Microsoft.ApplicationServer.Caching.AzureCommon.
     CacheDiagnostics.ConfigureMemcacheShimCrashDumps
     (DiagnosticMonitorConfiguration diagnosticMonitorConfig)
   at Microsoft.ApplicationServer.Caching.AzureCommon.
      CacheDiagnostics.ConfigureDiagnostics
      (DiagnosticMonitorConfiguration diagnosticMonitorConfig, 
      String diagnosticsStorageAccountConfigurationSettingName)
   at Microsoft.ApplicationServer.Caching.AzureCommon.
      CacheDiagnostics.ConfigureDiagnostics(
      DiagnosticMonitorConfiguration diagnosticMonitorConfig)

person edymtt    schedule 03.10.2013    source источник


Ответы (2)


Я проверил сборку Microsoft.ApplicationServer.Caching.AzureCommon с помощью ILSpy и обнаружил функцию, в которой CacheDiagnostics.ConfigureDiagnostics ищет web.config или *.dll.config для роли — в среде Azure он проверяет оба файла, а если обнаруживает эмулятор вычислений, он проверяет только web.config. ИМХО, это ошибка в библиотеке (вероятно, не столь важная, поскольку кэширование, похоже, используется в основном из веб-ролей).

Затем я скопировал app.config для рабочей роли, переименовал его в web.config и настроил для копирования в выходных данных проекта — таким образом я смог вызывать CacheDiagnostics.ConfigureDiagnostics без исключений.

person edymtt    schedule 03.10.2013

Для меня проблема заключалась в том, что файл Web.config копировался в папку bin/Release, в то время как CacheDiagnostics.ConfigureDiagnostics искал его в папке approot. Итак, я вручную вставил туда файл, чтобы протестировать его локально. В облаке файл конфигурации копируется в правильный каталог.

person Ravi Gupta    schedule 20.01.2015