我是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;
}
}
答案 0 :(得分:3)
您正在检查LoggedUserkey
是否null
..如果您要添加UserId
,您可能必须从TextBox添加LoggedUserkey
。LoggedUserkey
。
其他部分的目的是什么?当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网站。如果你没有及时向服务器发送任何请求,那么你必须开始一个新的会话,而不是会话超时