计算Web应用程序的在线用户数

时间:2010-07-18 12:42:57

标签: c# asp.net .net session visual-studio-2008

我正在使用ASP.Net + .Net 3.5 + VS2008 + IIS 7.0 + C#来开发Web应用程序。我想算一下有多少用户在线。这是我目前的实施,

  1. 调用Session_Start时,我会将在线用户数增加1;
  2. 调用Session_End时,我将在线用户数减少1。
  3. 两个问题,

    A该实施是否正确?

    B中。另一个问题是,我认为这种方法无法实时跟踪用户数,因为当用户关闭浏览器时,不会立即调用Session_End(Session_End将被推迟调用)。正确的吗?

3 个答案:

答案 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分钟内唯一登录的数量,以获得在线总数。