2013-01-25 91 views
1

我有一個Web服務器場,其中包含4個Web服務器,它包含一個由網絡負載平衡器控制的Web應用程序(x),用於分佈式會話維護,我使用App fabric cache作爲會話提供程序。Appfabric緩存未刷新 - 使用sharedId

我只用一個緩存服務器創建一個區域。

我的配置文件包含區域名稱和共享應用程序ID,它在整個服務器場中託管的所有Web應用程序(x)中都是相同的。

但是我看到,如果我訪問採用了IPS的網絡應用程序的所有會話是不同的

http://10.10.10.1/myapp/file.aspx returns different session values 
http://10.10.10.2/myapp/file.aspx returns different session values 
http://10.10.10.3/myapp/file.aspx returns different session values 
http://10.10.10.4/myapp/file.aspx returns different session values 
http://servername/myapp/file.aspx returns different session values 

什麼是在這種情況下使用sharedId的?我的看法是保持一個會話,儘管我的應用程序託管在多臺服務器上以提高性能。

主要的問題是我的緩存犯規行爲正常,有時會值不更新,甚至1-2分鐘,變更後

我的web.config設置

<section name="dataCacheClient" type="Microsoft.ApplicationServer.Caching.DataCacheClientSection, Microsoft.ApplicationServer.Caching.Core, Version=1.0.0.0,Culture=neutral, PublicKeyToken=31bf3856ad364e35" allowLocation="true" allowDefinition="Everywhere"/> 

<dataCacheClient> 
    <!-- cache host(s) --> 
     <hosts>  
      <host name="x" cachePort="22233" /> 
     </hosts> 
    <securityProperties mode="None" protectionLevel="None" /> 
</dataCacheClient> 


<sessionState mode="Custom" customProvider="AppFabricCacheSessionStoreProvider"> 
    <providers> 
     <add name="AppFabricCacheSessionStoreProvider" type="Microsoft.ApplicationServer.Caching.DataCacheSessionStoreProvider" cacheName="xyz" sharedId="app123" /> 
    </providers> 
</sessionState> 

回答

1

嘗試看看如果你總是保持相同的ASPNET Cookie(在你喜歡的瀏覽器中使用開發工具)。由於Cookie也綁定到域,因此如果域不同,瀏覽器將不會發送它。

在緩存集羣上,檢查會話數量:如果您有多個會話,那麼在分佈式會話管理中肯定會遇到問題。

+0

以及upvote是企圖!但根本原因是web.config –

+0

中遺漏的屬性「sharedId」抱歉,我的web.config可能會誤導你!因爲我已經包含sharedId –

+1

啊....最簡單的解釋總是好的! – Cybermaxs