我在我的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