我在计算机上尝试了新的sdk附带的新天蓝色预览。 我将一个worker角色放在缓存预览中,并将共同定位的角色放在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个),每次切换机器时都会得到不同的缓存。如果我将标识符更改为我的worker角色,我会得到结果
答案 0 :(得分: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>
答案 1 :(得分: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>
最诚挚的问候,
徐明。