предварительный просмотр кэша Azure

Я попробовал новую предварительную версию Azure, поставляемую с новым пакетом SDK, на моем компьютере. Я ставлю рабочую роль с предварительным просмотром кеша и ставлю совместную роль с размером кеша 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 экземплярами. в результате каждый раз, когда я видел другой идентификатор, это означает, что кеш вывода никогда не работает со всеми 4 экземплярами (чтобы было ясно, я настраиваю кеш вывода для работы с предварительным просмотром кеша).

Только когда я добавляю дополнительную рабочую роль кеша в качестве выделенной роли, все начинает работать так, как должно быть.

Мои вопросы: нужна ли мне дополнительная рабочая роль, чтобы предварительный просмотр кеша работал нормально? - что означает, что компромисс между неработающим кешем azure appfabric ставит дополнительную машину

Я что-то сделал, и это должно работать с веб-ролями как с соседними ролями?

Благодарность

редактировать: это еще один раздел моего 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 (это мои веб-роли, которых у меня 4), каждый раз, когда я переключаю машину, я получаю другой кеш. если я изменю идентификатор на свою рабочую роль, я получу результат


person Ram Y    schedule 18.06.2012    source источник


Ответы (2)


Можете ли вы добавить тег applicationName в конфигурацию провайдера в файле web.config вашего приложения? Если это не будет добавлено, экземпляры не будут совместно использовать кеш. Обратите внимание на тег applicationName. Это следует добавить в файл web.config webrole в сценарии с выделенным или совмещенным кэшем. Пожалуйста, ответьте, если это решит вашу проблему.

<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>
person Alfan    schedule 21.06.2012

Я не могу воспроизвести эту проблему. Я всегда вижу один и тот же экземпляр и использую 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>

Наилучшие пожелания,

Мин Сюй.

person Ming Xu - MSFT    schedule 18.06.2012
comment
добавьте дополнительный код в мой вопрос - ctrl+F5 не решает мою проблему. когда у меня 4 роли, я всегда видел другой идентификатор, а не каждый раз один и тот же. - person Ram Y; 18.06.2012