Web ロールの 2 つのインスタンスで実行されている同じ場所にあるキャッシュで、Windows Azure キャッシュ用のセッション状態プロバイダーを使用しようとしています。ASP.NET MVC4 プロジェクトがあります。セットアップ方法についてはMicrosoft のガイドに従い、何度も実行しましたが、結果は同じでした。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)
これは私のweb.configとこのセクションに関係していることに気づきました:
<dataCacheClients>
<tracing sinkType="DiagnosticSink" traceLevel="Error" />
<dataCacheClient name="default">
<autoDiscover isEnabled="true"/>
</dataCacheClient>
</dataCacheClients>
ただし、そのセクションは Microsoft ガイドから直接引用されています。また、適切なエントリを web.config に追加する WindowsAzure.Caching Nuget-package をアンインストールして再インストールしようとしましたが、見た目もまったく同じです。
MSDN で同じ問題と思われるものについての議論を見つけましたが、新しい Azure Web ロールをスピンアップしたため、この場合、GAC と古いバージョンの SDK に関連しているとは思えません。 、または何か不足していますか?
デプロイされたサイトの bin-folder を調べると、Azure インスタンスで、ファイル バージョンの myMicrosoft.ApplicationServer.Caching.Client.dll
とMicrosoft.ApplicationServer.Caching.Core.dll
が1.0.4621.0
. WindowsAzure.Caching
これは、 Nuget パッケージをインストールするときにプロジェクトで参照されるのと同じファイルです。これは使用する適切なファイルですか?
15 時間のデバッグの後、これに関するご意見をお待ちしております。
アップデート:
このプロジェクトを新しい Web ロールの 2 つのインスタンスに公開すると、実際にこのプロジェクトが機能するようになりました。その展開を開始し、違いを見つけることができるかどうかを確認します。
更新 2:
違いは、私のプロジェクトではとのバージョン1.0.4621.0
を使用しているのに対し、Microsoft のプロジェクトでは を使用していることです。そのため、実際には古いバージョンの SDK を使用している可能性があります。何らかの理由で、私のプロジェクトは、それらのファイルを削除しても、公開時にそれらのファイルをアップロードすることを主張しますが、これで問題が解決した場合は完全な回答が返ってきます。Microsoft.ApplicationServer.Caching.Client.dll
Microsoft.ApplicationServer.Caching.Core.dll
1.0.4655.0