我正在使用 ASP.Net 3.5 C# 开发一个网站。我列出了我网站中的所有在线用户(重新登录我网站的用户)。当用户注销或只是关闭浏览器或导航到其他站点时,我想跟踪和更新用户在数据库中的状态。在所有这些情况下,我想将用户的状态更新为“注销”。
我该如何继续前进。
谢谢维韦克
首先检查我在另一个问题中的答案:
如果某些用户关闭浏览器、关闭计算机或类似情况,您将无法立即关闭会话并跟踪此更改。这是通过使用会话超时来实现的。
如果用户在某个时间间隔内触发了对服务器的某些操作,则另一种可能性可能是在线用户,这将在您的服务器逻辑中实现。
注销应该很容易跟踪,因为它是“人类用户”操作。只需在您的身份验证管理器类或任何其他处理身份验证的类中实现“UserLogout”事件并在那里跟踪注销。
由于技术限制,无法跟踪浏览到另一个页面或关闭 Web 浏览器等客户端用户操作:该领域缺乏 API。这更多是因为 Web 范式及其原理。你需要错过它。
可以轻松跟踪合法注销(即通过单击注销按钮等注销)。您只需处理该事件并将其数据库状态标记为已注销。
然而,关闭浏览器是我从未取得过成功的一件事。您将通过网络获得许多解决方案,这些解决方案会告诉您捕获关闭按钮,然后捕获 ajax 请求等,但我没有成功。
(像 Session_End 之类的东西可能会派上用场,但是如果您使用的是 IN-PROC 会话模式以外的任何东西,那么这个事件不会被触发,所以这是不可靠的)。
当用户单击按钮时,您只需在服务器端(在代码隐藏中)处理单击事件,然后记录状态更改。
对于浏览器关闭的情况,您可以在 global.asax 中处理 Session_End 事件,该事件在会话结束时触发:
public void Session_End(object sender, EventArgs e)
{
// Fires when the session ends
}
你真的不知道用户是否关闭了浏览器,或者他是否导航到另一个站点。我认为您需要使用某种 AJAX 控件,该控件会在给定的时间间隔内向服务器发送一些消息,以确保用户正在查看您的网站。