Исключение при вызове CacheDiagnostics.ConfigureDiagnostics из рабочей роли с помощью Caching 2.1
Я установил Windows Azure Caching 2.1.0.0 от Nuget и настроил коллекцию диагностики клиентской библиотеки для рабочей роли, используя Azure SDK 2.1, следуя инструкциям в этом ответе SO.
К сожалению, когда я запускаю приложение в среде разработки, я получаю следующее исключение - я не понимаю, почему оно жалуется на файл конфигурации. Я искал эту ошибку, но не нашел ничего подходящего для моего случая.
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)
2 ответа
Я осмотрел сборку Microsoft.ApplicationServer.Caching.AzureCommon
с ILSpy, и я обнаружил функцию, в которой CacheDiagnostics.ConfigureDiagnostics
ищет web.config
или же *.dll.config
для роли - в среде Azure он проверяет оба файла, а если обнаруживает эмулятор вычислений, он проверяет только web.config
, ИМХО, это ошибка в библиотеке (вероятно, не так важная, поскольку, похоже, кэширование используется в основном из веб-ролей).
Затем я скопировал app.config
для рабочей роли я переименовал ее в web.config
и установите его для копирования на выходе проекта - так я смог вызвать CacheDiagnostics.ConfigureDiagnostics
без исключений.
Для меня проблема была в том, что Web.config
файл копировался в папку bin/Release, пока CacheDiagnostics.ConfigureDiagnostics
искал это под approot
папка. Итак, я вручную вставил туда файл, чтобы проверить его локально. В облаке файл конфигурации копируется в правильную директорию.