会话超时

时间:2011-04-27 13:23:36

标签: asp.net session browser logging out

我正在使用ASP.Net 3.5 C#开发一个网站。我列出了我网站上的所有在线用户(在我的网站上重新登录的用户)。我想在用户注销或只是关闭浏览器或导航到其他站点时跟踪和更新用户在数据库中的状态。在所有这些情况下,我想将用户的状态更新为“已注销”。

我怎样才能继续前进。

由于 的Vivek

4 个答案:

答案 0 :(得分:0)

当用户单击该按钮时,您只需处理服务器端的click事件(在代码隐藏中),然后记录状态更改。

对于浏览器关闭的情况,您可以处理global.asax中的Session_End事件,该事件在会话结束时触发:

public void Session_End(object sender, EventArgs e)
{
    // Fires when the session ends
}

答案 1 :(得分:0)

可以轻松跟踪合法注销(即通过单击注销按钮等注销)。您只需处理该事件并标记其数据库状态即可。

然而关闭浏览器是我从来没有取得过成功的一件事。您将通过网络获得许多解决方案,告诉您捕获关闭按钮,然后是ajax请求等,但我没有成功与任何人。

(像Session_End这样的东西可能会派上用场但是如果你使用IN-PROC会话模式以外的任何东西都不会被解雇,那么这个事件就不会被解雇了。)

答案 2 :(得分:0)

您实际上并不知道用户是否已关闭浏览器,或者他是否已导航到其他网站。我认为您需要使用某种AJAX控件,它会在给定的时间间隔内向服务器发送一些消息,以确保用户正在查看您的站点。

答案 3 :(得分:0)

首先在另一个问题中检查我的答案:

如果某些用户关闭浏览器,关闭计算机或类似的东西,您将无法立即关闭会话并跟踪此更改。这是通过播放会话超时来实现的。

另一种可能性是,如果用户在某个时间间隔内触发了对服务器的某些操作,则可以考虑在线用户,这将在您的服务器逻辑中实现。

应该可以轻松跟踪注销,因为它是“人类用户”操作。只需在您的身份验证管理器类或任何其他处理身份验证和跟踪注销的类中实现“UserLogout”事件。

无法跟踪客户端用户操作,例如浏览到其他页面或关闭Web浏览器,因为技术限制:API缺乏此区域。这更多是因为网络范式及其原则。你需要错过它。