2015-05-05 27 views
0

我们是否可以在global.asax文件的Session_End事件中重新填充像用户信息,ID等会话,而不是将用户重定向到登录页面,以便用户不必再次登录?我们可以在全局文件的Session_End事件中重新填充会话吗?

+0

我编辑了你的标题。请参阅:“[应该在其标题中包含”标签“](http://meta.stackexchange.com/questions/19190/)”,其中的共识是“不,他们不应该”。 –

+0

其实我对.net 的具体感谢方式 – ShazebAli

+0

说“ASP.NET”暗示“.NET”。 –

回答

2

Session_End表示会话已过期。默认会话时间为20分钟。会话也有滑动到期。因此,如果用户在20分钟内不会做任何请求,则该会话将会过期,并且将调用Session_End事件。

如果您需要更大的会话超时,可以增加它在web.config中一样:

<system.web> 
    <sessionState timeout="60" /> 
</system.web> 

但在Session_End事件重新填充会议对我来说没有太大的意义,因为反正用户不上现场至少20分钟。无论如何,每个会话都将过期,因为服务器需要释放不活动会话使用的内存以处理新会话,并且不会浪费旧内存。

0

有很多方法可以处理这个问题。当Session_End发生时 - 会话结束。我在所有页面(或主页面)的顶部都有代码,用于检查会话是否已经结束。我倾向于对用户执行诸如存储2个GUID之类的操作,并在用户登录时返回它们。我将一个cookie粘贴到用户的盒子中,另一个粘贴在隐藏字段中(同样,最好在母版页或用户控件中出现在每一页上)。如果会话超时,我从cookie中检索一个GUID,另一个来自隐藏字段,并使用它们两者返回数据库,检索用户的详细信息并重新填充会话。

在用户全天登录的站点上 - 每15分钟使用javascript刷新一次会话。成千上万的用户在一个相当低端的服务器环境中 - 从来没有遇到任何问题。

相关问题