2010-09-29 60 views
0

我遇到了在我的網站上丟失會話變量的問題。它隨機附加,所以沒有特殊的行爲導致這種情況。這次會議的原因是什麼造成的?在ASP.NET C中丟失會話#

我讀過到處都在這個網站,我可以把我的會議「SQL服務器」模式,因此一切都在服務器上寫的,它可以是一個解決辦法?

我的服務器上的1and1共享主機,也可以是他們的錯?

謝謝!

+1

什麼版本的IIS?什麼版本的.NET?你說什麼樣的時間差異 - 秒/分鐘/小時/天? – Oded 2010-09-29 19:15:49

+0

不知道ISS的版本,因爲它不是我控制它的版本。 .Net版本3.5。有人瀏覽我的網站可能會在10分鐘內失去一次或兩次會話。有時候,10分鐘沒有問題。希望它回答你的問題,如果你需要更多的信息,我可以問1And1託管 – 2010-09-29 19:36:11

回答

2

請與您的應用程序沒有被一個負載平衡服務器上託管的託管服務提供商。如果服務器負載均衡,則當負載均衡器將請求發送到其他服務器時,用戶將丟失會話狀態信息。有3個設置會話狀態模式屬性: InProc - 將狀態信息本地存儲在發出請求的服務器上(僅當應用程序在非負載平衡環境中的單個服務器上託管時纔有效) 的StateServer - 允許專門配置的服務器主機的狀態信息爲整個Web場(我相信StateServer的開始.NET框架2.0版將提供)。 SqlServer的 - 允許專門配置的SQL Server實例來存儲會話信息的Web場 [此信息將改變Web園方案略低。]

有關會話狀態的更多信息,請參見MSDN

這可以根據自己的負載平衡設置(認爲:粘性負載平衡)非常隨機發生的,可以工作幾分鐘一次,失敗幾乎立即另一個時間。

另一種可能是在web.config將sessionState設置的超時屬性已被設置爲一個低的值(它是在分鐘)並且會話到期。

+0

對於超時屬性,這是可以的。會話設置爲1小時,所以這不是問題。但負載平衡真的很有趣。我會期待我的公司看看他們是否這樣做。但我期待在sqlserver中創建我的會話。我會保持這個線程更新,並在你的問題消失後立即回答爲「接受」:) – 2010-09-30 14:09:21

+0

你是對的......他們使用負載平衡,所以每次服務器發生變化時,我都會鬆開會話。但現在我正在尋找一種使用會話的方式。我會寫一個新的問題!非常感謝! – 2010-10-04 18:56:19