所以我想知道是否可以将Azure共享缓存和新的共存缓存用于Web角色?我想在旧的Azure共享缓存中存储会话状态,以使用VIP交换保留应用程序部署之间的会话状态。我想使用新的共存缓存来缓存内存中的值,这些值经常访问但在数据库中不经常更改,因此非常适合使用新的共存缓存和通知进行缓存。
答案 0 :(得分:1)
应该可以正常工作 - 只需在配置部分为缓存使用不同的名称:
<dataCacheClients>
<dataCacheClient name="colocated">
<autoDiscover isEnabled="true" identifier="[cache cluster role name]" />
</dataCacheClient>
<dataCacheClient name="shared">
<hosts>
<host name="yourcachename.cache.windows.net" cachePort="22233" />
</hosts>
</dataCacheClient>
</dataCacheClients>
并在代码中:
DataCache coloCache = new DataCache("colocated");
DataCache sharedcache = new DataCache("shared");
并在你的会话配置中:
<!-- Windows Azure Caching session state provider -->
<sessionState mode="Custom" customProvider="AFCacheSessionStateProvider">
<providers>
<add name="AFCacheSessionStateProvider"
type="Microsoft.Web.DistributedCache.DistributedCacheSessionStateStoreProvider, Microsoft.Web.DistributedCache"
cacheName="shared"
dataCacheClientName="shared"
applicationName="AFCacheSessionState"/>
</providers>
</sessionState>
答案 1 :(得分:0)
我认为不可能让两者兼顾。似乎一个版本的缓存需要101.0.0.0版本的Microsoft.ApplicationServer.Caching和Microsoft.Web.DistributedCache,而另一个版本需要1.0.0.0版本。这可以通过为Azure缓存和Azure共享缓存安装不同的nuget包来验证。如果有人知道如何同时运行,请在此处发布解决方案。
我已使用Microsoft ASP.NET Universal Providers将会话数据迁移到Azure SQL,并将分布式缓存添加到项目中,而不是同时使用这两种缓存方法。