7

VS2012 を使用して、WebRole プロパティのキャッシュ タブからキャッシュ機能を追加しました。特に、web.config で次の XML を生成しました。

  <dataCacheClients>   
     <tracing sinkType="DiagnosticSink" traceLevel="Error" />
     <dataCacheClient name="default">
         <autoDiscover isEnabled="true"  identifier="[cluster role name]"/>
         <!-- <localCache isEnabled="true" sync="TimeoutBased" objectCount="100000" ttlValue="300" /> -->
     </dataCacheClient> 
    </dataCacheClients>

わかりました。[クラスター ロール名] を Web ロールの名前に置き換えて、"helloworld.web" とします。ここで、DataCacheFactory または DataCache オブジェクトを作成すると、次のようになります。

  _dataCacheFactory = new DataCacheFactory();
    _defaultCache = _dataCacheFactory.GetDefaultCache();

    //Or, just this line
    _defaultCache = new DataCache(@"default");

次のエラーが表示されます。

Microsoft.ApplicationServer.Caching.DataCacheException was unhandled
  HelpLink=http://go.microsoft.com/fwlink/?LinkId=164049
  HResult=-2146233088
  Message=ErrorCode<ERRCA0021>:SubStatus<ES0001>:Server collection cannot be empty.
  Source=Microsoft.ApplicationServer.Caching.Client
  ErrorCode=21
  SubStatus=-1

Some notes: 
IDE: VS2012,
Framework: 4.0
AzureSDK: June2012
Local dev machine

私は何が欠けていますか?

編集

私はそれを働かせました!

WebRole OnStart メソッドで DataCacheFactory を作成していましたが、それを Global.asax の Application_Start に移動しましたが、動作しているようです。

Sandrino は、なぜそうなのかを説明しています: https://stackoverflow.com/a/11886136/1374935

4

3 に答える 3

6

あなたの質問では、XML をweb.configに追加することについて話しています。これは、Web ロールでホストされている Web アプリケーションに対して機能します (そのため、Application_Start メソッドで使用するとコードが機能します)。

ただし、WebRole.cs のコードが別のプロセスで実行されることを知っておく必要があります (Web アプリケーションを開始する前に)。そのため、web.config から読み取ることができず、サーバーが構成されていないように見えたのはそのためです。

そのコードを WebRole.cs からも機能させるには、そのコードを実行するプロセスの構成ファイルに XML を追加する必要があります。コードはWaIISHost.exeプロセスで実行されるため、新しい構成ファイルWaIISHost.exe.configを作成し、このファイルに XML を追加して、そのファイルの [出力ディレクトリにコピー] プロパティを [常にコピー] に変更する必要があります。

この WaIISHost.exe プロセスの詳細については、「IIS の新しい完全な機能: Hosted Web Core との違い」を参照してください。

于 2012-08-09T14:52:36.500 に答える
1

私はそれを働かせました!

WebRole OnStart メソッドで DataCacheFactory を作成していましたが、それを Global.asax の Application_Start に移動しましたが、動作しているようです。

于 2012-08-09T14:39:12.907 に答える