我有一个用MVC4 .NET构建的网站。现在我想跟踪用户在我的网站上在线的时间。示例:用户打开浏览器,然后登录我的网站并在我的网站上活动约30分钟,然后关闭浏览器。我想将30分钟存储到数据库,但我不知道如何实现它。请帮助我,因为我现在非常需要这样做。非常感谢你
答案 0 :(得分:0)
Here是一个跟踪网站上用户登录/注销时间的脚本。它是一个简单的脚本,它已在一些网站上使用。此外,您还可以使用此脚本查看您网站上有多少用户在线。
但问题是当用户关闭浏览器时他没有注销。他的会议即将到期
其他方法之一是global action filter拦截对所有控制器上的所有操作的请求,然后您可以获取当前用户和页面的数据库中每个操作的时间。为了节省太多的数据库,您可以缓存这些值并每隔几分钟使其无效,具体取决于您要处理的流量。
<强>更新强> 关闭浏览器这不是普通网络http协议中提供的内容。当浏览器关闭时,没有真正的方法可以确定;你只能那种知道。你必须把一个丑陋的黑客扔在一起才能获得任何确定性,即使这样,它也会在大量边缘情况下失败或导致令人讨厌的副作用。
正常的解决方法是每隔一段时间从浏览器向服务器发送 ajax请求,以设置一种心跳。当心跳停止时,浏览器关闭,因此您终止会话。但同样:这是一个可怕的黑客。在这种情况下,主要的问题是,如果服务器和客户端失去同步或者出现javascript错误,很容易因失败的心跳而得到误报,并且会产生一个副作用,即你的会话永远不会过期。