从具有Caching 2.1的辅助角色调用CacheDiagnostics.ConfigureDiagnostics时出现异常

时间:2013-10-03 18:07:21

标签: .net azure azure-worker-roles azure-caching

我已经从Nuget安装了Windows Azure Caching 2.1.0.0,并按照this SO answer中的说明使用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)

2 个答案:

答案 0 :(得分:0)

我已经使用ILSpy检查了程序集Microsoft.ApplicationServer.Caching.AzureCommon,并且我发现了CacheDiagnostics.ConfigureDiagnostics搜索web.config*.dll.config角色的函数 - Azure环境它检查两个文件,而如果它检测到计算模拟器,它只检查web.config。恕我直言这是库中的一个错误(可能不是那么重要,因为缓存似乎主要来自Web角色)。

然后我复制了app.config for worker角色,我将其重命名为web.config并将其设置为在项目输出中复制 - 这样我就可以调用{{1没有例外。

答案 1 :(得分:0)

对我来说,问题是Web.config文件被复制到bin / Release文件夹下,而CacheDiagnostics.ConfigureDiagnosticsapproot文件夹下查找它。所以,我手动将文件粘贴到那里进行测试。在云上,配置文件将被复制到正确的目录下。