增加會話超時
通過IIS 7.0託管的站點
我想在我的 ASP.NET 應用程序中將會話超時設置為 9 小時。
這已在 web.config 中設置
<sessionState timeout="540"></sessionState>但是,據我了解,如果在託管網站的 IIS 內將超時設置為 20 分鐘,那麼設置擴展會話狀態將毫無用處。
首先,我想確認這個假設是否正確。
問題是我無法訪問共享託管 Web 伺服器的 IIS。
現在,經過一番研究,我在程式碼項目中提出了另一個解決方案。這聽起來像一個
wonderful idea. 這個想法是將 iframe 插入母版頁。iframe 將包含另一個頁面,其元刷新時間少於 20 分鐘。Response.AddHeader("Refresh", "20");這個想法對我來說似乎很好。但是這篇文章是7年前的。另外,在評論部分,使用者抱怨如果頁面被最小化,這將不起作用,我擔心當我的頁面選項卡不活動時也會發生同樣的情況。
我想知道這些事情
- 即使頁面最小化,刷新方法是否適用於我的場景?
- 是否有任何其他方法可以增加覆蓋 IIS 超時設置的會話超時?
- 我還閱讀了 Stack Overflow 中的一些問題,其中的答案表明IIS 會話超時適用於經典 ASP 頁面。那為什麼我的延長超時沒有觸發?
首先,我想確認這個假設是否正確。
是的,如果您使用的是記憶體會話狀態模式,這個假設是絕對正確的。在這種情況下,會話儲存在記憶體中,並且由於 IIS 可能在不同的情況下(不活動期、達到 CPU/記憶體門檻值……)關閉 AppDomain,因此會話數據將失去。您可以使用程序外會話狀態模式。StateServer 或 SQLServer。在第一種情況下,會話儲存在執行 aspstate Windows 服務的特殊專用機器的記憶體中,在第二種情況下,它是專用的 SQL Server。SQL Server 是最強大的,但顯然是最慢的。
1)即使頁面最小化,刷新方法是否適用於我的場景?
隱藏的 iframe 仍然可以保持會話處於活動狀態,但正如我之前所說,當 IIS 解除安裝應用程序時可能會出現一些情況(達到 CPU/記憶體門檻值 => 您也可以在 IIS 中配置它)。
- 是否有任何其他方法可以增加覆蓋 IIS 超時設置的會話超時?
前一種方法不會增加會話超時。它只是通過定期向伺服器發送 HTTP 請求來維持會話活動,以防止 IIS 關閉 AppDomain。
- 我還在 Stack Overflow 中閱讀了一些問題,其中的答案表明 IIS 會話超時適用於經典 ASP 頁面。那為什麼我的延長超時沒有觸發?
沒有 IIS 會話超時之類的東西。會話是一個 ASP.NET 工件。IIS 是一個對會話一無所知的 Web 伺服器。
我個人不在我的應用程序中使用會話。我只是禁用它們:
<sessionState mode="Off"></sessionState>並使用標準 HTTP 工件(例如 cookie、查詢字元串參數等)來維護狀態。我更喜歡將資訊保存在我的後端,並在以後使用唯一 ID 檢索它,而不是依賴會話。