构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(40)-精准在线人数统计实现-【过滤器+Cache】
原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(40)-精准在线人数统计实现-【过滤器+Cache】

系列目录

上次的探讨没有任何结果,我浏览了大量的文章和个别系统的参考!决定用Cache来做,这可能有点难以接受但是配合mvc过滤器来做效果非常好!

由于之前的过滤器我们用过了OnActionExecuting这个方法来判断权限

现在在方法被执行后我们用OnActionExecuted来监听用户的操作和刷新用户在线列表

首先下载http://files.cnblogs.com/ymnets/OnlineUser.7z这个类库,代码清晰,并加注释

这个类库包括了操作在线用户列表的增删方法,大家可以下载下来看并放到

可以打开研究其代码!

在App.Admin新建类OnlineHttpModule

using App.Core.OnlineStat;
using App.Models.Sys;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Net.Http;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Web;
using System.Web.Routing;namespace App.Admin
{public class OnlineHttpModule{// 缓存键public static readonly string g_onlineUserRecorderCacheKey = "__OnlineUserRecorder";#region IHttpHandler 成员public static void ProcessRequest(){// 获取在线用户记录器OnlineUserRecorder recorder = HttpContext.Current.Cache[g_onlineUserRecorderCacheKey] as OnlineUserRecorder;if (recorder == null){// 创建记录器工厂OnlineUserRecorderFactory factory = new OnlineUserRecorderFactory();// 设置用户超时时间factory.UserTimeOutMinute = 2;// 统计时间间隔factory.StatisticEventInterval = 20;// 创建记录器recorder = factory.Create();// 缓存记录器
                HttpContext.Current.Cache.Insert(g_onlineUserRecorderCacheKey, recorder);}OnlineUser user = new OnlineUser();AccountModel model = (AccountModel)HttpContext.Current.Session["Account"];//注意session的名称是和登录保存的名称一致// 用户名称user.UserName = Convert.ToString(model.Id);// SessionIDuser.SessionID = HttpContext.Current.Session.SessionID;// IP 地址user.ClientIP = HttpContext.Current.Request.UserHostAddress;// 最后活动时间user.ActiveTime = DateTime.Now;// 最后请求地址user.RequestURL = HttpContext.Current.Request.RawUrl;// 保存用户信息
            recorder.Persist(user);}#endregion}
}

这个类在用户登录时被调用和在过滤器被调用,调用代码

过滤器:

   public class SupportFilterAttribute : ActionFilterAttribute{public string ActionName { get; set; }private string Area;// 方法被执行后的更新在线用户列表public override void OnActionExecuted(ActionExecutedContext filterContext){OnlineHttpModule.ProcessRequest();}
......................................

登录时候的设置:

 AccountModel account = new AccountModel();account.Id = user.Id;account.TrueName = user.TrueName;account.Photo = string.IsNullOrEmpty(user.Photo)?"/Images/Photo.jpg":user.Photo;Session["Account"] = account;//在线用户统计OnlineHttpModule.ProcessRequest();

调用非常简单,实现非常简单!

现在看看如果获取在线列表:

            // 绑定在线用户列表IList<OnlineUser> userList = recorder.GetUserList();foreach (var OnlineUser in userList){sb.AppendFormat(OnlineUser.UserName+"<br>");}

OnlineHttpModule可以自由设置统计的间隔(秒),和用户超时的时间,这很精准的统计了用户2分钟无操作被视为离线!

我分别用IE和chome测试了2个用户,同时也关闭浏览器测试用户,准确性也不错!抛弃了不准确的原始老方法

posted on 2015-04-07 09:18 NET未来之路 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/lonelyxmas/p/4397465.html

构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(40)-精准在线人数统计实现-【过滤器+Cache】...相关推荐

  1. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(12)-系统日志和异常的处理②...

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(12)-系统日志和异常的处理② 上一讲我们做了日志与异常的结果显示列表,这一节我们讲要把他应用系统中来. ...

  2. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(31)-MVC使用RDL报表

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(31)-MVC使用RDL报表 这次我们来演示MVC3怎么显示RDL报表,坑爹的微软把MVC升级到5都木有良 ...

  3. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(32)-swfupload多文件上传[附源码]...

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(32)-swfupload多文件上传[附源码] 文件上传这东西说到底有时候很痛,原来的asp.net服务器 ...

  4. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(39)-在线人数统计探讨

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(39)-在线人数统计探讨 系列目录 基于web的网站在线统计一直处于不是很精准的状态!基本上没有一种方法可 ...

  5. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(34)-文章发布系统①-简要分析...

    构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(34)-文章发布系统①-简要分析 原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入 ...

  6. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(13)-系统日志和异常的处理③

    构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(13)-系统日志和异常的处理③ 参考文章: (1)构建ASP.NET MVC4+EF5+EasyUI+Unity ...

  7. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(10)-系统菜单栏[附源码]

    构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(10)-系统菜单栏[附源码] 原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后 ...

  8. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(44)-工作流设计-设计表单...

    构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(44)-工作流设计-设计表单 原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后 ...

  9. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(36)-文章发布系统③-kindeditor使用...

    构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(36)-文章发布系统③-kindeditor使用 原文:构建ASP.NET MVC4+EF5+EasyUI+Un ...

最新文章

  1. jquery/css需要记录的小知识(持续补充)
  2. 基于c++的马氏距离算法代码_监控警戒区基于掩码算法的简单实现(附代码)
  3. join 高性能_内置的数据无法实现高性能
  4. 监测利器cacti服务安装
  5. 第1步 新建spring+springmvc+mybatis项目 每步都有 讲解 巨详细
  6. django ModuleNotFoundError: No module named 'tinymce***'
  7. 基于yolov3和pythorch框架的火焰识别检测算法
  8. 【干货】Python编程惯例
  9. matlab语言主要功能,2014年秋季学期《MATLAB语言及应用》课程试题-2
  10. 08_实现用户邮箱激活
  11. 海力士固态测试软件,ACPI SSD2G 256GB性能测试
  12. SQL Server 代码颜色
  13. C盘 html后缀 删,磁盘清理c盘的后果是什么?
  14. python求球的表面积_python中计算体积或表面积的好算法
  15. Excel表格之道 学习笔记(四)
  16. 【T+】畅捷通T+服务管理中,异步任务服务(TPlusPopAsyncTaskService1700)无法启动
  17. navigation_plugin
  18. 数学建模:整数规划示例模型 (Python 求解)
  19. 大数据具有哪些特征?大数据具有哪些特征?
  20. Worthington产气荚膜梭菌神经氨酸酶的特征及测定

热门文章

  1. 理论+实践轻松掌握nohup java -jar xxxx.jar /dev/null 21 意义
  2. 大话数据库连接池简史,你都用过几个?
  3. 追求极简:Docker镜像构建演化史
  4. Android Studio——怎么设置代码补全以及提示(详细)?
  5. vectornator安卓_Vectornator Pro
  6. 课程及其编码字典python_【课程15】Python字典
  7. 深度学习训练中噪声减小吗_【机器学习 155】DoubleEnsemble
  8. 国内“重量级”单体数据中心开始运营 火了这个县
  9. 笔试真题及其答案解析:国内各大银行计算机方向笔试之计算机基础知识—选择题120题
  10. 成功解决利用pandas输出DataFrame格式数据表时没有最左边的索引编号(我去,这个问题折腾了我半个多小时)