1

我在我的电脑上尝试了新 sdk 附带的新 azure preview。我放置了一个带有缓存预览的工作角色,并放置了一个具有 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 个实例的模拟器运行 worker 角色。结果是,每次我看到一个不同的 id - 这意味着输出缓存永远不会与所有 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 个),每次我切换机器时我都会得到不同的缓存。如果我将标识符更改为我的工人角色,我会得到结果

4

2 回答 2

1

您可以在应用程序的 web.config 的提供程序配置中添加applicationName标记吗?如果不添加,实例将不会共享缓存。请注意applicationName标签。这应该在专用或托管缓存方案中为 web.config 添加 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 回答