Asp.net

增加會話超時

  • January 26, 2015

通過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年前的。另外,在評論部分,使用者抱怨如果頁面被最小化,這將不起作用,我擔心當我的頁面選項卡不活動時也會發生同樣的情況。

我想知道這些事情

  1. 即使頁面最小化,刷新方法是否適用於我的場景?
  2. 是否有任何其他方法可以增加覆蓋 IIS 超時設置的會話超時?
  3. 我還閱讀了 Stack Overflow 中的一些問題,其中的答案表明IIS 會話超時適用於經典 ASP 頁面。那為什麼我的延長超時沒有觸發?

首先,我想確認這個假設是否正確。

是的,如果您使用的是記憶體會話狀態模式,這個假設是絕對正確的。在這種情況下,會話儲存在記憶體中,並且由於 IIS 可能在不同的情況下(不活動期、達到 CPU/記憶體門檻值……)關閉 AppDomain,因此會話數據將失去。您可以使用程序外會話狀態模式。StateServer 或 SQLServer。在第一種情況下,會話儲存在執行 aspstate Windows 服務的特殊專用機器的記憶體中,在第二種情況下,它是專用的 SQL Server。SQL Server 是最強大的,但顯然是最慢的。

1)即使頁面最小化,刷新方法是否適用於我的場景?

隱藏的 iframe 仍然可以保持會話處於活動狀態,但正如我之前所說,當 IIS 解除安裝應用程序時可能會出現一些情況(達到 CPU/記憶體門檻值 => 您也可以在 IIS 中配置它)。

  1. 是否有任何其他方法可以增加覆蓋 IIS 超時設置的會話超時?

前一種方法不會增加會話超時。它只是通過定期向伺服器發送 HTTP 請求來維持會話活動,以防止 IIS 關閉 AppDomain。

  1. 我還在 Stack Overflow 中閱讀了一些問題,其中的答案表明 IIS 會話超時適用於經典 ASP 頁面。那為什麼我的延長超時沒有觸發?

沒有 IIS 會話超時之類的東西。會話是一個 ASP.NET 工件。IIS 是一個對會話一無所知的 Web 伺服器。

我個人不在我的應用程序中使用會話。我只是禁用它們:

<sessionState mode="Off"></sessionState>

並使用標準 HTTP 工件(例如 cookie、查詢字元串參數等)來維護狀態。我更喜歡將資訊保存在我的後端,並在以後使用唯一 ID 檢索它,而不是依賴會話。

引用自:https://stackoverflow.com/questions/8656463