ASP.NET中Session丟失原因與解決方案小結_.Net教程
推薦:在ASP.NET ORACLE添加數據記錄并讓ID自動增量 在ASP.NET ORACLE添加數據記錄并讓ID自動增量需要在ORACLE中設序列和觸發器即可,切記不是索引,ASP.NET中不管ID,具體如下: 1、建立序列: CREATE SEQUENCE seq_emergency_id
win2003 server下的IIS6默認設置下對每個運行在默認應用池中的工作者進程都會經過20多個小時后自動回收該進程,造成保存在該進程中的session丟失。
因為Session,Application等數據默認保存在運行該Web應用程序的工作者進程中,如果回收工作者進程,則會造成丟失。
解決辦法:
修改配置,設置為不定時自動回收該工作者進程,比如設置為當超出占用現有物理內存60%后自動回收該進程。通過使用默認應用程序池,可以確保多個應用程序間互相隔離,保證由于一個應用程序的崩潰不會影響另外的Web應用程序。還可以使一個獨立的應用程序運行在一個指定的用戶帳號特權之下。
如果使用StateServer方式或者Sql Server數據庫方式來保存Session,則不受該設置的影響。
可能的原因2:
系統要運行在負載平衡的 Web 場環境中,而系統配置文件web.config中的Session狀態卻設置為InProc(即在本地存儲會話狀態),導至在用戶訪問量大時,Session常經超時的情況。引起這個現象的原因主要是因為用戶通過負載平衡IP來訪問WEB應用系統,某段時候在某臺服務器保存了Session的會話狀態,但在其它的WEB前端服務器中卻沒有保存Session的會話狀態,而隨著并發量的增大,負載平衡會當作路由隨時訪問空閑的服務器,結果空閑的服務器并沒有之前保存的Session會話狀態。
解決辦法:
1.當您在負載平衡的 Web 場環境中運行 ASP.NET Web 應用程序時,一定要使用 SqlServer 或 StateServer 會話狀態模式,在項目中我們基于性能考慮并沒有選擇SqlServer模式來存儲Session狀態,而是選擇一臺SessionStateServer 服務器來用戶的Session會話狀態。我們要在系統配置文件web.config中設置如下:
<sessionState mode="StateServer" cookieless="false" timeout="240" stateConnectionString="tcpip=192.168.0.1:42424" stateNetworkTimeout="14400" />
還要添加一項
<machineKey validationKey="78AE3850338BFADCE59D8DDF58C9E4518E7510149C46142D7AAD7F1AD49D95D4" decryptionKey="5FC88DFC24EA123C" validation="SHA1"/>
2. 我們同時還要在SessionStateServer 服務器中啟動ASP.NET State Service服務,具體設置:控制面板>>管理工具>>服務>>ASP.NET State Service,把它設為自動啟動即可。
3. 每臺前端WEB服務的Microsoft“Internet 信息服務”(IIS)設置
要在 Web 場中的不同 Web 服務器間維護會話狀態,Microsoft“Internet 信息服務”(IIS) 配置數據庫中 Web 站點的應用程序路徑(例如,\LM\W3SVC\2)與 Web 場中所有 Web 服務器必須相同。大小寫也必須相同,因為應用程序路徑是區分大小寫的。在一臺 Web 服務器上,承載 ASP.NET 應用程序的 Web 站點的實例 ID 可能是 2(其中應用程序路徑是 \LM\W3SVC\2)。在另一臺 Web 服務器上,Web 站點的實例 ID 可能是 3(其中應用程序路徑是 \LM\W3SVC\3)。因此,Web 場中的 Web 服務器之間的應用程序路徑是不同的。我們必須使Web 場Web 站點的實例 ID 相同即可。你可以在IIS中把某一個WEB配置信息保存為一個文件,其他Web 服務器的IIS配置可以來自這一個文件。
分享:ASP.NET頁面事件:順序與回傳詳解 一、初始化 ·當頁面被提交請求第一個方法永遠是構造函數。您可以在構造函數里面初始一些自定義屬性或對象,不過這時候因為頁面還沒有被完全初始化所以多少會有些限制。特別地
- asp.net如何得到GRIDVIEW中某行某列值的方法
- .net SMTP發送Email實例(可帶附件)
- js實現廣告漂浮效果的小例子
- asp.net Repeater 數據綁定的具體實現
- Asp.Net 無刷新文件上傳并顯示進度條的實現方法及思路
- Asp.net獲取客戶端IP常見代碼存在的偽造IP問題探討
- VS2010 水晶報表的使用方法
- ASP.NET中操作SQL數據庫(連接字符串的配置及獲取)
- asp.net頁面傳值測試實例代碼
- DataGridView - DataGridViewCheckBoxCell的使用介紹
- asp.net中javascript的引用(直接引入和間接引入)
- 三層+存儲過程實現分頁示例代碼
- 相關鏈接:
- 教程說明:
.Net教程-ASP.NET中Session丟失原因與解決方案小結
。