我在我的Asp.net應用程序中,我設置會話超時,並經過一段時間後,該會議仍未過期的問題。這個應用程序有一個SQL Server 2008後端數據庫,並且在那裏存儲此應用程序的會話超時值。我目前將其設置爲3分鐘用於測試目的。在Global.asax中,在在session_start我有以下幾點:ASP.Net會話超時不工作
// Set the timeout
int timeout = GetSessionLength();
this.Session.Timeout = timeout;
而且GetSessionLength()
是查詢數據庫的會話超時後返回一個整數值的函數。
然後,在該網站的主頁,在Page_Load中,我有以下幾點:
System.Web.UI.HtmlControls.HtmlMeta hmRefresh = new System.Web.UI.HtmlControls.HtmlMeta();
hmRefresh.HttpEquiv = "Refresh";
hmRefresh.Content = (this.Session.Timeout * 60).ToString();
Page.Header.Controls.Add(hmRefresh);
這將導致頁面刷新自身一旦超時被擊中。我的頁面使用它成功刷新自己。但是,當會話過期時,我還有其他一些代碼會被擊中,但是它永遠不會被擊中,因爲它顯示會話永不過期。
此外,我一直在開發一個不同的應用程序在我的電腦上,我使用相同的代碼在該應用程序來檢測會話超時,它正在完美的應用程序。所以我不確定爲什麼它不是這個。
根據服務器的情況,如果您等待了幾秒鐘,爲了確保時間已過,該怎麼辦?遠射... – 2012-04-13 16:28:47
出於好奇,你知道ASP.NET可以通過使用web.config文件爲你管理所有這些,對吧? – 2012-04-13 16:30:18
@ ajax81,是的,我非常清楚這一點。爲了安全起見,我想遠程地從SQL Server中進行更改。如果我們選擇的會話長度太短,我可以輕鬆地更改它。 – 2012-04-13 16:35:10