6

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.dllMicrosoft.ApplicationServer.Caching.Core.dll1.0.4621.0. WindowsAzure.Cachingこれは、 Nuget パッケージをインストールするときにプロジェクトで参照されるのと同じファイルです。これは使用する適切なファイルですか?

15 時間のデバッグの後、これに関するご意見をお待ちしております。

アップデート:

このプロジェクトを新しい Web ロールの 2 つのインスタンスに公開すると、実際にこのプロジェクトが機能するようになりました。その展開を開始し、違いを見つけることができるかどうかを確認します。

更新 2:

違いは、私のプロジェクトではとのバージョン1.0.4621.0を使用しているのに対し、Microsoft のプロジェクトでは を使用していることです。そのため、実際には古いバージョンの SDK を使用している可能性があります。何らかの理由で、私のプロジェクトは、それらのファイルを削除しても、公開時にそれらのファイルをアップロードすることを主張しますが、これで問題が解決した場合は完全な回答が返ってきます。Microsoft.ApplicationServer.Caching.Client.dllMicrosoft.ApplicationServer.Caching.Core.dll1.0.4655.0

4

1 に答える 1

4

最新のAzure SDK1.7 SP1または1.8にアップグレードしてみてください。Azure SDK 1.8 が今週リリースされたばかりです。MSDN フォーラムによると、役割ベースのキャッシュ用にAzure SDK 1.7.1+autoDiscoverでのみサポートされています。

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

于 2012-10-31T13:22:30.927 に答える