65.9K
CodeProject 正在变化。 阅读更多。
Home

ASP.NET 在线活动用户计数器

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.30/5 (20投票s)

2008年9月30日

CPOL

3分钟阅读

viewsIcon

163316

downloadIcon

8109

使用这个为 ASP.NET 编写的工具,可以统计网站上在线用户、会员和访客的数量。

引言

使用这个为 ASP.NET 编写的工具,可以统计网站上在线用户、会员和访客的数量。

该工具的安装非常简单,只需几分钟即可完成。

第一步 - 添加引用

下载附件后,您应该将引用添加到项目中。如果您知道如何添加引用,请跳过此步骤。

要添加引用,请右键单击您的解决方案,然后从菜单中选择“添加引用”。然后选择“OnlineActiveUsers.dll”文件。现在引用已添加到解决方案。

第二步 - 更改配置

打开项目中的“Web.config”文件(如果该文件不存在,请右键单击您的项目,然后从“添加新项”中选择“Web 配置文件”)。然后,将此代码添加到“web.config”文件中。

<httpModules>
  <add name="OnlineActiveUsers" 
       type="OnlineActiveUsers.OnlineUsersModule"/>
</httpModules>

请注意,此代码应放置在“system.web”标记之间。

第三步 - 向 global.asax 添加一些代码

在项目中打开“global.asax”文件(如果该文件不存在,请右键单击您的项目,然后从“添加新项”中选择“全局应用程序类”)。在“session_end”事件中,添加此代码

OnlineActiveUsers.OnlineUsersInstance.OnlineUsers.UpdateForUserLeave()

如果项目是 C#,结果应如下所示

void Session_End(object sender, EventArgs e)
{
    OnlineActiveUsers.OnlineUsersInstance.OnlineUsers.UpdateForUserLeave();
}

现在该工具将开始计算用户统计信息。

第四步 - 访问统计信息

要获取统计信息,请引用“OnlineActiveUsers.OnlineUsersInstance.OnlineUsers”变量。

以下是它的一些重要属性

  • UsersCount:所有在线用户的数量。
  • GuestUsersCount:在线访客用户的数量。只有在使用 SetUserOfflineSetUserOnline 方法时,此属性才有效。这些方法将在下面进行解释。
  • RegistredUsersCount:在线会员的数量。只有在使用 SetUserOfflineSetUserOnline 方法时,此属性才有效。这些方法将在下面进行解释。

访客用户和会员

为了正确计算访客用户和会员,有必要编写一些代码。以下是解释

我们考虑的第一个状态是当用户进入您的网站并登录网站时。要实现访客用户和会员的计数过程,有几种方法,但我这里使用一种简单的方法,即使用 ASP.NET 的标准 Login 控件。如果您不使用此控件,请跳过此段。

在此 Login 控件的 LoggedIn 事件中添加此代码

OnlineActiveUsers.OnlineUsersInstance.OnlineUsers.SetUserOnline(Login1.UserName)

例如,在 C# 中,代码应如下所示

protected void Login1_LoggedIn(object sender, EventArgs e)
{
    OnlineActiveUsers.OnlineUsersInstance.OnlineUsers.SetUserOnline(Login1.UserName);
}

有了这段代码,我们就指定用户已登录,并将被计为会员。

总的来说,当您不使用 Login 控件时,您需要做的就是在此用户通过身份验证后调用此方法。

OnlineActiveUsers.OnlineUsersInstance.OnlineUsers.SetUserOnline(UserName)

UserName”参数应为已通过身份验证的用户名。

我们使用的第二个状态是当用户已登录并且他将要退出其帐户时。如果您使用的是“LoginStatus”控件,请将此代码添加到“LoggedOut”事件中

OnlineActiveUsers.OnlineUsersInstance.OnlineUsers.SetUserOffline(User.Identity.Name)

例如,在 C# 中,代码应如下所示

protected void LoginStatus1_LoggedOut(object sender, EventArgs e)
{
    OnlineActiveUsers.OnlineUsersInstance.OnlineUsers.SetUserOffline(User.Identity.Name);
}

这里,“User.Identity.Name”是已登录的用户名。

总的来说,使用此方法将用户计为访客

OnlineActiveUsers.OnlineUsersInstance.OnlineUsers.SetUserOffline(UserName)

在此代码中,“UserName”参数应为用户名。此名称区分大小写。

在执行完这些过程后,“GuestUsersCount”和“RegistredUsersCount”属性将正确显示访客用户和会员的数量。

其他方法

  • IsOnline 方法
  • 此方法返回用户的在线状态。输入参数是区分大小写的用户名,结果是 true 如果用户在线;否则,结果是 false

  • GetLastActivity 方法
  • 此方法返回用户的上次活动时间。输入参数是区分大小写的用户名,结果是“DateTime”类型,如果用户在线;否则,结果是 C# 中的“null”或 VB.NET 中的“Nothing”。

© . All rights reserved.