安全性的Azure缓存

时间:2014-03-13 17:50:54

标签: .net session caching azure wif

如何使用专用缓存工作者角色和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或缓存配置错误。

想法?

由于

1 个答案:

答案 0 :(得分:0)

似乎我将sessiontoken更改为以下代码剪辑它的工作原理。不确定这是否正确。

      var sessionToken = new SessionSecurityToken(principal) 
        {
            IsPersistent = true,
        };