Azure Web角色抛出的web.config中无法识别的元素"autoDiscover"

Chr*_*son 6 c# asp.net asp.net-mvc azure azure-caching

我正在尝试在两个Web角色实例上运行的共存缓存上使用会话状态提供程序进行Windows Azure缓存.我有一个ASP.NET MVC4项目.我按照微软的指导如何设置它,并经历了多次,但结果相同.当我发布到Azure时,我在每个页面上都有一个YSOD.

我已经浏览了我的Azure实例上的日志,发现了可能导致此问题的异常:

Event code: 3008 
Event message: A configuration error has occurred. 

...

Exception information: 
    Exception type: DataCacheException 
    Exception message: ErrorCode<ERRCMC0003>:SubStatus<ES0001>:Error in client configuration file.
   at Microsoft.ApplicationServer.Caching.ConfigFile.ThrowException(Int32 errorCode, Exception e)
   at Microsoft.ApplicationServer.Caching.ClientConfigReader.Init(String path)
   at Microsoft.ApplicationServer.Caching.DataCacheFactoryConfiguration..cctor()

Unrecognized element 'autoDiscover'. (E:\sitesroot\0\web.config line 20)
   at System.Configuration.BaseConfigurationRecord.EvaluateOne(String[] keys, SectionInput input, Boolean isTrusted, FactoryRecord factoryRecord, SectionRecord sectionRecord, Object parentResult)
   at System.Configuration.BaseConfigurationRecord.Evaluate(FactoryRecord factoryRecord, SectionRecord sectionRecord, Object parentResult, Boolean getLkg, Boolean getRuntimeObject, Object& result, Object& resultRuntimeObject)
   at System.Configuration.BaseConfigurationRecord.GetSectionRecursive(String configKey, Boolean getLkg, Boolean checkPermission, Boolean getRuntimeObject, Boolean requestIsHere, Object& result, Object& resultRuntimeObject)
   at System.Configuration.BaseConfigurationRecord.GetSection(String configKey)
   at System.Configuration.ConfigurationManager.GetSection(String sectionName)
   at Microsoft.ApplicationServer.Caching.ClientConfigReader.Init(String path)
Run Code Online (Sandbox Code Playgroud)

我意识到这与我的web.config和本节有关:

<dataCacheClients> 
  <tracing sinkType="DiagnosticSink" traceLevel="Error" /> 
  <dataCacheClient name="default"> 
    <autoDiscover isEnabled="true"/> 
  </dataCacheClient> 
</dataCacheClients>
Run Code Online (Sandbox Code Playgroud)

但该部分直接来自Microsoft指南.我还尝试卸载并重新安装WindowsAzure.Caching Nuget-package,它将正确的条目添加到web.config中,但它看起来完全一样.

我发现这个讨论关于什么样子的是同样的问题在MSDN上,但我SPINN了一个新的Azure的Web角色,所以我不能看到,它应该与海关总署在这种情况下旧版本的SDK或者我错过了什么?

通过部署站点的Bin文件夹中寻找,在我的Azure的情况下,我看到的文件版本我Microsoft.ApplicationServer.Caching.Client.dllMicrosoft.ApplicationServer.Caching.Core.dll1.0.4621.0.这是我安装WindowsAzure.CachingNuget-package 时在我的项目中引用的相同文件.这是正确的文件吗?

经过15个小时的调试,对此的任何输入都将受到高度赞赏.

更新:

当我将它发布到新Web角色的两个实例时,我实际上已经让这个项目工作了.我将开始进行该部署,看看我是否能发现任何差异.

更新2:

所不同的是,我的项目使用的版本1.0.4621.0Microsoft.ApplicationServer.Caching.Client.dllMicrosoft.ApplicationServer.Caching.Core.dll,而微软的项目使用1.0.4655.0.所以实际上我可能正在使用旧版本的SDK.出于某种原因,我的项目坚持在我发布时上传这些文件,即使我删除它们,但如果能解决问题,我会回答完整的答案.

Sli*_*SFT 4

尝试将最新的Azure SDK升级到1.7 SP11.8Azure SDK 1.8 本周刚刚发布根据 MSDN 论坛autoDiscover仅在Azure SDK 1.7.1+中支持基于角色的缓存

Azure SDK 1.6 2011 年 11 月)程序集版本:1.0.4617.0
Azure SDK 1.7 2012 年6月)程序集版本:1.0.4621.0
Azure SDK 1.7.1 2012 年 6 月 SP1)程序集版本:1.0.4655.0
Azure SDK 1.8 2012 年 10 月)程序集版本:1.0.4797.0

  • 谢谢你!正如您所建议的,我通过升级到 1.8 解决了该异常。不幸的是,该版本导致了另一个异常,但我会将其作为另一个问题一起发布,以防我无法解决它。谢谢! (2认同)