[IIS][ASP.net] 連線逾時,Session Timeout的設定 - 點部落

文章推薦指數: 80 %
投票人數:10人

前言. 如果ASP.net程式中有使用到Session的話,以下說明如何設定Session timeout逾時時間. (如果可以的話,登入機制建議採用ASP.net Form表單驗證, ... ASP.netsessiontimeout  前言 如果ASP.net程式中有使用到Session的話,以下說明如何設定Sessiontimeout逾時時間 (如果可以的話,登入機制建議採用ASP.netForm表單驗證,儲存資料則使用HTML5的localStorage,比較不用煩惱容易遺失Session問題) 實作 在ASP.net網站的Web.config裡加入以下區段,timeout單位為分鐘 或使用IIS來設定也是同樣效果(從IIS7之後都會修改到Web.config)↓ 從IIS選擇站台後,雙擊兩下「工作階段狀態」 還有工作者處理序的閒置逾時時間也要設定 工作者處理序為以下w3wp.exe(IISWorkerProcess),預設閒置20分鐘後,IIS會結束w3wp.exe程序導致Session遺失 所以先看站台(或應用程式)的基本設定>查看使用哪個應用程式集區 再找到該應用程式集區右鍵>「進階設定」 把「閒置逾時」加長時間 或另一辦法,把「閒置逾時動作」改成Suspend,雖然這樣工作者處理序會永久佔用電腦記憶體..... 「閒置逾時」、「閒置逾時動作」兩者挑一個改   另外,IIS預設每隔1740分鐘(29小時)就會自動另起新的工作者處理序,結束原本的工作者處理序(就像是對著應用程式集區滑鼠右鍵>回收的動作一樣) 這也會導致Session遺失,建議設定如下,固定時間間隔設0,讓應用程式集區不會定期回收,而是在指定時間(凌晨網站最少使用者上線時間)才做回收動作 會有這樣回收機制,是IIS為了解決網站執行久了,可能發生MemoryLeaking問題 以上三項為解決ASP.net網站Session逾時/遺失問題的設定。

補充釐清 如果是透過右方選單「限制」>「連線逾時」或「進階設定」>「連線逾時」 (這兩個選項指的是同樣事情) 此處的「連線逾時」指的是HTTPkeep-alive連線逾時,和SessionTimeout工作階段逾時兩者是不一樣的事情。

回首頁



請為這篇文章評分?