2010-12-03 67 views
1

我們有一個動態加載控件的ASP.net表單[IIS 3.5上的.NET 3.5]。只要回發在20分鐘內發生,我們就可以保留視圖狀態中的值。數據庫也會正確更新。一切都按預期工作。向ASP.NET動態添加控件-viewstate在20分鐘後不會被保留

但是,如果用戶填寫表單需要超過20分鐘,則控件在回發期間不再保留其值。會話值完好無損,用戶身份驗證也完好無損。我們試圖增加機鍵web.config文件中幾件事情

1) - 我們有2 web服務器負載由Windows負載平衡器平衡

2)我們確認用戶路由到同一臺服務器 - 因爲會話是粘

3)在IIS 6.0

4增加對連接池的空閒超時至60分鐘

5)更改的形式認證TI增加會話超時到60分鐘) cket超時到60分鐘

任何幫助,將不勝感激。

-Thanks

+0

你的意思是「控件在回發期間不再保留它們的值」是什麼意思?如果您有一個帶有按鈕和文本框的表單,請填寫文本框並在20分鐘後點擊按鈕,textbox.text屬性在服務器上將爲空。 – Greg 2010-12-03 18:24:26

回答

4

20分鐘是應用程序池回收的默認超時時間。在服務器上運行IIS管理器,進入應用程序池屬性,並取消單擊「回收工作進程(分鐘)」,或將其設置爲60.

1

「粘性」會話並不意味着「總是轉到同一臺服務器」 。這只是一個建議。誠然,這是一個強大的,但仍然只是一個建議。負載均衡器通過保留客戶端及其目標服務器的內存緩存來工作。這個內存是有限的,並定期垃圾收集。意思是,根據請求之間的時間長短,你可能會在服務器之間彈跳。

如果您在使用負載均衡機器的內存會話數據中使用,則必須1.停止使用會話或將後備存儲更改爲會話狀態服務器或sql server。這是確保會話數據在所有目標服務器上實際可用的唯一方法。

您是如何確定會話和用戶值仍然完好無損的?你只是猜測你是關於他們要去哪個服務器?

要徹底消除負載均衡作爲罪魁禍首,請關閉其中一臺機器。

0

問題可以在<sessionPageState historySize="9" />配置中。它控制會話中存儲了多少「回髮結果」。每個回發都將其ViewState記錄到Session [「__ VIEWSTATEQUEUE」]中的隊列末尾。

相關問題