如何使用专用缓存工作者角色和webrole的多个实例设置共享缓存? dotnet 4.5.1 mvc 5.1。
我有一个sessiontoken我正在尝试用于身份验证/授权。该令牌的有效期为/很长。
var sessionToken = new SessionSecurityToken(principal)
{
IsReferenceMode = true,
};
FederatedAuthentication.WSFederationAuthenticationModule.
SetPrincipalAndWriteSessionToken(sessionToken, true);
我添加了缓存工作者角色,并通过启用缓存并将其设置为专用来配置它。它使用30分钟的滑动窗口LRU策略创建了一个默认的命名缓存设置。
在我的webroles的web.config中
<sessionState mode="Custom" customProvider="SessionProvider">
<providers>
<add name="SessionProvider"
type="Microsoft.Web.DistributedCache.DistributedCacheSessionStateStoreProvider, Microsoft.Web.DistributedCache"
cacheName="default"
dataCacheClientName="default"
applicationName="MyApp"/>
</providers>
</sessionState>
<dataCacheClients>
<dataCacheClient name="default">
<autoDiscover isEnabled="true" identifier="CacheWorkerRole" />
</dataCacheClient>
</dataCacheClients>
它似乎适用于一个实例,但在我介绍更多时失败了。它似乎工作了一两分钟就消失了。就像一个实例不知道缓存。即使我点击一下试图进入第一个实例,它似乎已经消失了。
似乎我可以从每个实例手动添加/读取缓存中的内容。
我必须将WIF或缓存配置错误。
想法?
由于
答案 0 :(得分:0)
似乎我将sessiontoken更改为以下代码剪辑它的工作原理。不确定这是否正确。
var sessionToken = new SessionSecurityToken(principal)
{
IsPersistent = true,
};