2014-03-13 61 views
0

如何使用專用緩存輔助角色和多個卷軸實例來設置共享緩存? dotnet 4.5.1 mvc 5.1。安全鎖定的Azure緩存

我有一個sessiontoken我試圖用於認證/授權。該令牌具有很長的有效期限。

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

       FederatedAuthentication.WSFederationAuthenticationModule. 
        SetPrincipalAndWriteSessionToken(sessionToken, true); 

我添加了緩存輔助角色,並通過啓用緩存並將其設置爲專用來配置緩存輔助角色。它使用30分鐘的滑動窗口LRU策略創建了一個默認的命名緩存設置。

在我的web.config我webroles的

<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

看來,如果我的sessiontoken更改爲下面的代碼剪斷它的工作原理。不知道這是否是正確的事情。

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