Windows-Server-2008
ASP.Net 會話快速超時
我們有一個在 IIS7 的 Windows Server 2008 上執行的 ASP.Net 3.5 網站。此站點的會話超時期限配置為 20 分鐘 - 但是,目前持續時間在 40 到 50 秒之間。在研究了這個問題後,我們調查了幾個可能涉及超時時間的配置值,但沒有一個設置為小於 20 分鐘。我們看的區域如下:
- web.config system.web/sessionState 元素(20 分鐘)。
- web.config system.web/authentication/forms 元素(不存在,預設為 30 分鐘)。
- 站點/{網站}/ASP/會話屬性/超時(20 分鐘)。
- 應用程序池/{appPool}/高級設置/程序模型/空閒超時(20 分鐘)。
我們還注意到 CPU 保持在 0% 左右,RAM 使用率保持在 1.07 GB 左右(可用 8 GB) - 因此 IIS 沒有基於性能的理由來回收應用程序池我們可以告訴。
是否有任何我們忽略的設置可能導致會話超時過快到期?
編輯
還有幾點:
- 這不會發生在開發中,僅發生在伺服器上。
- 會話沒有滑動(即,如果我們刷新頁面幾次,它仍然會在會話創建後大約 40 - 50 秒超時。
當工作程序崩潰並被回收時,所有會話也會失去。你檢查你的事件日誌有什麼奇怪的嗎?
它可以在程式碼中被覆蓋。Session.Timeout = nn 分鐘。
出於安全目的,ASP.NET 應用程序也可能有一些程式碼來過期和放棄會話。這是通過 Session.Abandon() 完成的。您可能想要驗證會話沒有在應用程序中被刪除。希望應用程序在身份驗證程式碼中具有某種類型的日誌記錄,這將有助於揭示會話活動。
會話到期也在滑動。因此,如果您每隔幾秒鐘就頻繁地連接到該網站,它確實應該不會過期。如果是這樣,肯定有什麼東西被頂了。