1. 程式人生 > >IIS設置_session被清空的方法

IIS設置_session被清空的方法

為什麽 net com 生效 lan img .config pro 兩種

經常聽到程序員會說,明明設置了很長的超時時間,為什麽沒有生效呢?session很快就被清空了。

asp.net默認的sessionstate模式是inproc(進程內),數據是在網站的應用程序池裏面保存的。這樣在web.config設置的超時時間,是在應用程序池沒有發生回收的基礎上才是有效的。

這樣就出現了問題,為什麽應用程序池會發生回收?如何禁止應用程序池的回收,讓session的數據可以保存得時間長一點呢?FTP

這和IIS應用程序池的兩個設置有關:
技術分享圖片
技術分享圖片

【回收】裏面的【固定時間間隔(分鐘)】和【進程模型】裏面的【閑置超時(分鐘)】,這兩項的默認設置大概是二十或三十分鐘的樣子。也就是說,在應用程序池的運行時間達到設置的間隔,應用程序池會發生回收,session會被清空;在網站空閑,即沒有請求的時間達到設置值,應用程序池會發生回收,session會被清空。

這種回收的行為在一個正式運營的網站上面,是很不合適的。我覺得IIS的默認值是這樣也有點奇怪,因為默認值應該是一個最通用,適合最多人的一種設置,這兩項的默認值顯然不是。可能windows畢竟是最流行的桌面系統,考慮到回收可以節省資源,不影響其他的工作任務,才這樣設置的吧。服務器一般都是單一的工作任務,不進行回收帶來的價值,明顯是高於所消耗的資源的。

所以,如上面的截圖所示,我建議把這兩項都設置為0,禁用這兩種回收行為。

IIS設置_session被清空的方法