ASP.Net - 会话超时到期后发生的事情

时间:2013-09-05 11:29:56

标签: asp.net session-variables

我是ASP.Net的新手,我有一个基本的问题。我试图找到答案,但我失败了。

我使用会话变量通过我的网络应用程序中的页面来记录用户ID。

 if (Session["LoggedUserKey"] == null)
 {
     Session.Add("LoggedUserKey", UserID);
 }
 else
 {
     Session["LoggedUserKey"] = UserID;
 }

我不确定会话超时到期后会发生什么?我会丢失用户名吗?当我询问会话变量时会延长会话超时,如:

protected void Page_Load(object sender, EventArgs e)
{
    if (Session["LoggedUserKey"] == null)
    {
         Response.Redirect("~/Login.aspx");
         return;
    }
}

3 个答案:

答案 0 :(得分:3)

您正在检查LoggedUserkey是否null ..如果您要添加UserId,您可能必须从TextBox添加LoggedUserkeyLoggedUserkey。 其他部分的目的是什么?当UserId已经UserId或者您为什么再次添加UserId时?您已经失去了Session["LoggedUserKey"] == null会话到期的时刻。

第二个代码有意义.. 会话结束后。 (默认情况下20分钟后) 在页面加载{{1}}然后您将用户重定向到Login.aspx页面。

另请注意,每次与服务器交互时都会重置超时会话。例如刷新页面或与服务器交互的任何活动。

答案 1 :(得分:2)

当会话到期或发生会话超时时,会引发global.asax中的Session_End事件(除非会话由DB处理),并且会话集合最终被清除。

如果任何对象没有持有对会话集合中任何值的引用,那么GC将收集它。但是,关于何时GC将删除这些对象的时间不多。

此外,关于会话超时延长或不延长,timeout表示当前会话将被放弃之前必须经过的当前分钟数,前提是不再从客户端收到请求。可以通过编程方式更改此值,使您有机会在更重要的操作需要时保持会话收集的长期保留。

因此,结论是当用户在超时期限之前执行某些活动时会话会延长。如果用户在超时期限后执行某些活动,会话肯定会过期,用户将被重定向到登录页面,或者根据您的设置将会出现相应的后续步骤。

答案 2 :(得分:1)

您的会话在会话超时时已过期,您可以在web.config中将会话超时作为

<sessionState timeout="60"></sessionState>

然后会话将在60分钟后到期,您可以在此提供自定义时间。当会话过期时,您无法获得用户ID。例如,会话超时只有几分钟的bannking网站。如果你没有及时向服务器发送任何请求,那么你必须开始一个新的会话,而不是会话超时