我正在使用ASP.Net + .Net 3.5 + VS2008 + IIS 7.0 + C#来开发Web应用程序。我想算一下有多少用户在线。这是我目前的实施,
两个问题,
A该实施是否正确?
B中。另一个问题是,我认为这种方法无法实时跟踪用户数,因为当用户关闭浏览器时,不会立即调用Session_End(Session_End将被推迟调用)。正确的吗?
答案 0 :(得分:2)
您使用的是ASP.NET会员资格吗?
Membership.GetNumberOfUsersOnline()
您可以在web.config
中自定义用户被视为“在线”的时间 - 例如
<membership defaultProvider="..."
userIsOnlineTimeWindow="10"
<providers>
....
</providers>
</membership>
了解更多here
答案 1 :(得分:1)
使用Session_End的另一个问题是它不能可靠地触发,事实上如果你使用除了inproc会话状态以外的任何东西,你根本不能依赖它。
更好的选择是使用会员提供商,看看Membership.GetNumberOfUsersOnline()
答案 2 :(得分:1)
您的实施将不会非常准确 - 如果用户使用两个浏览器登录,您的计数器将增加两个。
许多网站只记录登录,然后计算最近x分钟内唯一登录的数量,以获得在线总数。