一般来说,你需要询问“如何知道谁在过去x分钟内活跃了”。在每个页面条目上记录他们的最后活动时间,然后查询该列表以查看谁在过去几分钟内一直处于活跃状态。您还可以扩展该功能并记录他们最后访问的页面,以了解有多少人在线上,有多少人在特定页面上。您可以通过向数据库中的用户表添加仅几个字段来完成此操作。一个是lastActivityTime,另一个是lastVisitedLocation。
您与已登录用户主要面临的问题是,没有保证的方法确保数字准确性。如果有人关闭或杀死他们的浏览器,或者失去电源,您只有在他们的会话过期时才能知道他们未登录。因此,默认情况下为20分钟...我并不真正赞成将这些信息持久化到数据库中的想法,尽管它是有效的,但同样的问题仍然存在。您可以精确显示的是asp.net认为活动的会话数量,而不一定是仍在使用您网站的用户数量。Jonathan的答案是最好的妥协,因为它是一个时间点的度量,而不是一个保证的数字。