worker ロール インスタンス間でキャッシュを設定しようとしています。これを行うために、Azure プロジェクトに新しいキャッシュ ワーカー ロールを追加しました。ただし、次のコードでデフォルトのキャッシュにアクセスしようとすると:
_dataCacheFactory = new DataCacheFactory();
var cache = _dataCacheFactory.GetDefaultCache();
デフォルトのキャッシュが返されず、呼び出しがタイムアウトします。Azure ドキュメントから app.config ファイルをコピーし、識別子タグにロール名を追加しました。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="dataCacheClients" type="Microsoft.ApplicationServer.Caching.DataCacheClientsSection, Microsoft.ApplicationServer.Caching.Core" allowLocation="true" allowDefinition="Everywhere" />
<section name="cacheDiagnostics" type="Microsoft.ApplicationServer.Caching.AzureCommon.DiagnosticsConfigurationSection, Microsoft.ApplicationServer.Caching.AzureCommon" allowLocation="true" allowDefinition="Everywhere" />
</configSections>
<dataCacheClients>
<dataCacheClient name="default">
<autoDiscover isEnabled="true" identifier="Cache" />
<!--<localCache isEnabled="true" sync="TimeoutBased" objectCount="100000" ttlValue="300" />-->
</dataCacheClient>
</dataCacheClients>
<cacheDiagnostics>
<crashDump dumpLevel="Off" dumpStorageQuotaInMB="100" />
</cacheDiagnostics>
</configuration>
キャッシュ ワーカー ロールの名前が実際に「キャッシュ」であることを再確認しました。キャッシュ ワーカー ロールと通常のワーカー ロールの両方で、構成タブの [キャッシュ] タブで次のように設定しました。
- キャッシュを有効にする
- 「専用ロール」に設定されたキャッシュクラスター設定
- ストレージ アカウントの資格情報: UseDevelopmentStorage=true
現在、これを Azure Compute Emulator で実行しています。ワーカー ロールとキャッシュ ワーカー ロールの両方が稼働中であることがわかります。不足している、または正しく設定されていない構成設定はありますか? ありがとう!