Azure 缓存预览版



我在计算机上尝试了新 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个),则每次切换计算机时,我都会得到不同的缓存。如果我将标识符更改为我的辅助角色,我会得到结果

您可以在应用程序的 web.config 的提供程序配置中添加 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>

我无法重现此问题。我总是看到相同的实例,并且我在浏览器中使用 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>

此致敬意

徐明.

最新更新