上述簡化了我的情況,但更強調我的困境 - 偶爾我的用戶是無法(會話超時之前好)來訪問他們的會話變量。我的配置如下:
- 應用是.NET Framework 3.5的
- 會話狀態由的StateServer處理(Web服務器上本地運行)的Web服務器上運行
- 的StateServer服務是.NET框架4.0
- 只有一個Web服務器,它不是一個農場或花園的情況
我控制的那臺sessio流有一個頁面n變量到一個自定義用戶對象的實例(如果我將二進制序列化到文件系統的對象,它們的大小可以在6kb到30kb之間,所以不是很小但不是很大)。該應用程序通常最多隻能同時擁有10個用戶。控制流中的後續頁面檢查會話變量是否爲空。如果會話變量爲空,則假定會話超時並且用戶被重定向到「丟失的會話」頁面。爲了進行調試,我放置了另一個對丟失會話頁面中相同會話對象的檢查。
我在日誌中看到的內容非常奇怪 - 用戶正在被髮送到丟失的會話頁面,但該對象確實存在於會話中!會話變量可能在PageTwo.aspx上爲null,但在LostSession.aspx上不爲null?是否有可能PageTwo.aspx運行得太快 - 意味着對象尚未完全「寫入」Session StateServer?
關於如何進一步調試的任何想法?
瀏覽器特定的cookie問題,如IOS和IFrame內導航?當它發生時獲取Fiddler跟蹤並查看是否有錯誤發生在cookie上。 –
@AlexeiLevenkov - 這是一個很好的想法。我對Web服務器的訪問權限有限,但我會請求設置一天左右的跟蹤以查看是否可以捕獲它發生的事情。我記錄每個請求以及SessionID,我可以看到ID在所有三個請求中是一致的 - 這是否意味着cookie是好的或不一定? – mikey
如果您在服務器端的跟蹤中看到相同的會話ID比cookies好...沒有其他想法:( –