下载地址:
http://www.bincess.cn/onlineuserservice.txt
使用方法,请参考下面的代码:
using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
namespace Bincess.WebForum
{
public class MyHttpModule : System.Web.IHttpModule
{
#region 类 MyHttpModule 构造器
/// <summary>
/// 类 MyHttpModule 默认构造器
/// </summary>
public MyHttpModule()
{
}
#endregion
#region IHttpModule 成员
public void Init(HttpApplication application)
{
application.PreRequestHandlerExecute += new EventHandler(Application_PostRequestHandlerExecute);
}
public void Dispose()
{
}
#endregion
/// <summary>
/// 当用户请求页面,并且其 Session 已经被建立时
/// </summary>
private void Application_PostRequestHandlerExecute(object sender, EventArgs e)
{
OnlineUserService.OnlineUser onlineUser = new OnlineUserService.OnlineUser();
// 设置在线用户名称
onlineUser.NickName = HttpContext.Current.Session["NickName"] as string;
// 当前用户所请求的 URL 地址
onlineUser.RequestURL = HttpContext.Current.Request.RawUrl;
// 活动时间
onlineUser.ActiveTime = DateTime.Now;
// 保存在线用户信息
OnlineUserService.Instance.Persist(HttpContext.Current.Session.SessionID, onlineUser);
}
}
}
在服务器每次处理请求时,将 Session 信息、请求地址、当前时间包装成一个 OnlineUser 类对象,之后传入到 Persist 方法。
OnlineUserService 仅有一个 Persist 方法被公开,这保证了代码外露接口的单一性,易于维护。
对于多线程环境是安全的,在代码中使用了加锁,在不同的场合分别对 数据表 和 数据行 进行加锁,保证数据同步……
其他说明,代码中已经写的比较详细