[英]IIS 6.0 Session Timeout Vs Web.Config Timeout Vs App pool Idle time out
我想增加IIS 6.0中托管的ASP.NET Web App的會話時間。 因此,我將站點的web.config中的SessionState計時更改為600分鍾。 但這沒有用,我的會話像一個小時后一樣超時。( Session["myVariable"] == null
)
<system.web>
<sessionState timeout="600" />
</system.web>
現在,我嘗試通過轉到網站->屬性->主目錄選項卡->配置按鈕->選項選項卡,在承載此應用程序的IIS網站中設置超時值,並將其更改為600分鍾,仍然沒有運氣。 這里的問題是,這適用於經典的ASP Pages,而不適用於ASP.NET網站。 這表示我做錯了。
然后,我檢查了運行該應用程序的應用程序池(“應用程序池”->“屬性”->“性能”選項卡)。 這表示“回收工人流程(以分鍾為單位)”為10分鍾。 我閱讀了很多關於SO的問題,但是沒有一個問題給出了有關如何增加ASP.NET WebApp會話超時的明確答案。
我想知道這三個設置之間的區別,以及何時使用哪些設置以及如何增加WebApp的會話超時。
您在web.config中設置的超時是會話超時。 它控制Web應用程序的每個“會話”在到期前需要等待的時間。 假設有一個用戶登錄到您的應用程序,並且在20分鍾內未執行任何操作,然后單擊一個按鈕,那么該用戶將被注銷,需要再次登錄(假設會話超時為20分鍾)。 繼續工作的任何其他用戶都不會受到影響。
應用程序池回收是另一回事。 此設置可按照指示終止並重新啟動IIS中的工作進程。 因此,如果將其設置為10分鍾,就好像您每10分鍾重新啟動IIS。 因此,除非您將會話狀態保存在其他位置,否則使用該應用程序池的應用程序中的所有會話都將過期。
應用程序池中還有另一個設置,即空閑超時。 它還設置為分鍾,如果在該時間段內沒有請求,它也會終止工作進程。 如果只有您的應用程序在IIS中運行,則還應該增加此值以及web.config中的會話超時值。 否則,即使ASP.NET喜歡長時間保持其會話,應用程序池也不會保留。
可在應用程序池->高級設置->流程模型中找到此設置
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.