1

新しい SDK に付属している新しい azure プレビューを自分のコンピューターで試してみました。キャッシュ プレビュー付きのワーカー ロールを配置し、キャッシュ サイズが 30% のコロケート ロールを配置しました。私のコントローラーに私はこのコードを入れました:

 [OutputCache(Duration=int.MaxValue, VaryByParam="none")]
    public ActionResult Index()
    {
        ViewBag.Message = "Welcome to ASP.NET MVC!";
        ViewBag.Id = Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.CurrentRoleInstance.Id;
        return View();
    }

今、私は4つのインスタンスを持つエミュレーターを介してワーカーロールを実行しました. その結果、異なる ID が表示されるたびに、出力キャッシュが 4 つのインスタンスすべてで動作することはありません (明確にするために、キャッシュ プレビューで動作するように出力キャッシュを構成します)。

追加のキャッシュ ワーカー ロールを専用ロールとして配置した場合にのみ、すべてが正常に機能し始めます。

私の質問は次のとおりです: キャッシュ プレビューを実際に正常に動作させるには、追加のワーカー ロールが必要ですか? - これは、azure appfabric キャッシュを使用しないことのトレードオフが余分なマシンを配置していることを意味します

Web ロールと同じ場所に配置されたロールとして機能する必要がありますか?

ありがとう

編集:これは私のweb.configの別のセクションです

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

私の識別子にNugetTest(これは私のWebロールです-私は4つ持っています)がある場合、マシンを切り替えるたびに別のキャッシュを取得します。識別子をワーカーロールに変更すると、結果が得られます

4

2 に答える 2

1

アプリのweb.configのプロバイダー構成にapplicationNameタグを追加できますか?これが追加されていない場合、インスタンスはキャッシュを共有しません。applicationNameタグに注意してください。これは、専用または同じ場所に配置されたキャッシュシナリオの両方でwebroleのweb.configに追加する必要があります。これで問題が解決した場合は、返信してください。

<caching>
  <outputCache defaultProvider="DistributedCache">
    <providers>
      <add name="DistributedCache" type="Microsoft.Web.DistributedCache.DistributedCacheOutputCacheProvider, Microsoft.Web.DistributedCache" cacheName="<cacheName>" applicationName ="<anyName>" dataCacheClientName="<dataCacheClientName>" />
    </providers>
  </outputCache>
</caching>
于 2012-06-21T05:09:31.673 に答える
0

この問題を再現できません。常に同じインスタンスが表示され、ブラウザーで Ctrl+F5 を使用しています (したがって、ブラウザーのキャッシュを除外します)。http://www.windowsazure.com/en-us/develop/net/how-to-guides/cache/の説明に従って、出力キャッシュ プロバイダーを構成したことを確認してください。

<!-- If output cache content needs to be saved in a Windows Azure
     cache, add the following to web.config inside system.web. -->
<caching>
  <outputCache defaultProvider="DistributedCache">
    <providers>
      <add name="DistributedCache"
            type="Microsoft.Web.DistributedCache.DistributedCacheOutputCacheProvider, Microsoft.Web.DistributedCache"
            cacheName="default"
            dataCacheClientName="default" />
    </providers>
  </outputCache>
</caching>

よろしくお願いします、

明徐。

于 2012-06-18T12:23:23.533 に答える