我在Web服務器服務器上有一個Web應用程序(mvc4和.net4.5),有一件事令我困惑,我的會話ID正在改變白板的原因,而且我失去了將它們存儲在會話狀態中的所有用戶數據。但它在本地機器上正常工作。爲什麼我的會話ID在服務器場服務器上多次更改?
我用這個配置在我的web配置:
<sessionState mode="StateServer" customProvider="DefaultSessionProvider"
cookieName="abcd" timeout="120" >
<providers>
<add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" />
</providers>
</sessionState>
和我的機器的關鍵是:
<machineKey compatibilityMode="Framework45"
validationKey="702C65CF39B1ED514AC4B92326C3A84B3D88990DDF784AA0895659B528ED95F8CA0A9CD1AF5ED92A2599362684CB8D204AC30D07E6BF0CF65194A5129"
decryptionKey="1C49E6BA2F9423387FBC91389A0C5C8D06B61875BCE4916A40474ED"
validation="SHA1" decryption="AES" />
我的會話超時是120分鐘,我找不到爲什麼這種情況發生我的web應用程序。我使用我的日誌類來查看我的web應用程序上發生了什麼,我相信 會話ID更改。
例如,當用戶轉到其他區域或用戶想通過網上銀行付款付款時,我將其重定向到銀行頁面,並且當用戶在同一窗口中從銀行重定向到我的網站時(我不打開另一個選項卡或窗口做到這一點)會話ID改變。
我在會話中存儲像用戶ID這樣的小數據。
我用這個語法來存儲會話:
HttpContext.Current.Session[System.Web.HttpContext.Current.Session.SessionID] = "abc"
和讀取的語法如下:
var myval=HttpContext.Current.Session[System.Web.HttpContext.Current.Session.SessionID]
它這樣做服務器沒有用我的配置,做自己的工作。 我想知道是否有可能在我的服務器場服務器上設置了一些配置,並且它不使用我的配置並自行工作?
你檢查這個帖子http://stackoverflow.com/questions/686873/allowing-session-in-a-web-farm-is- stateserver-good-enough – dove
我在我的網站上設置了所有必要的配置以隔離它並且我的對象具有序列化屬性 – motevalizadeh
包括這一點:http://download.microsoft.com/kb/325056 – dove