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.dll
和Microsoft.ApplicationServer.Caching.Core.dll
是1.0.4621.0
.这是我安装WindowsAzure.Caching
Nuget-package 时在我的项目中引用的相同文件.这是正确的文件吗?
经过15个小时的调试,对此的任何输入都将受到高度赞赏.
更新:
当我将它发布到新Web角色的两个实例时,我实际上已经让这个项目工作了.我将开始进行该部署,看看我是否能发现任何差异.
更新2:
所不同的是,我的项目使用的版本1.0.4621.0
中Microsoft.ApplicationServer.Caching.Client.dll
和Microsoft.ApplicationServer.Caching.Core.dll
,而微软的项目使用1.0.4655.0
.所以实际上我可能正在使用旧版本的SDK.出于某种原因,我的项目坚持在我发布时上传这些文件,即使我删除它们,但如果能解决问题,我会回答完整的答案.
尝试将最新的Azure SDK升级到1.7 SP1或1.8。Azure 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
归档时间: |
|
查看次数: |
1640 次 |
最近记录: |