Asp.net MVC4 记录在线用户数及登录时长

Global.asax.cs文件

    public class MvcApplication : System.Web.HttpApplication
    {
        /// <summary>
        /// 全局事件开始
        /// </summary>
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();

            WebApiConfig.Register(GlobalConfiguration.Configuration);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
            Application.Lock();
            Application["online"] = 0;
            Application.UnLock();
        }
        /// <summary>
        /// 全局事件结束
        /// </summary>
        protected void Application_End()
        {

        }
        /// <summary>
        /// 单个用户事件开始
        /// </summary>
        protected void Session_Start()
        {
            Application.Lock();
            int online = (int)Application["online"];
            Application["online"] = online + 1;
            Session["LoginDate"] = DateTime.Now;
            Application.UnLock();
        }
        /// <summary>
        /// 单个用户事件结束
        /// </summary>
        protected void Session_End()
        {
            Application.Lock();
            int online = (int)Application["online"];
            Application["online"] = online - 1;
            Application.UnLock();
        }
    }

Controller

        [HttpPost]
        public string LoginCheck()
        {
            if (Session["LoginDate"] == null)
            {
                Session["LoginDate"]=DateTime.Now;
                return "登录超时!";
            }
            DateTime loginDate = Convert.ToDateTime(Session["LoginDate"]);
            TimeSpan ts = DateTime.Now - loginDate; //记算当时间时与Session中保存的时间差
            string str = string.Format("已经登录{0}天{1}小时{2}分{3}秒", ts.Days, ts.Hours, ts.Minutes, ts.Seconds); //格式化输出
            return str;
        }

Html

    <span id="online"></span>
    <span id="LoginInfo"></span>

jQuery

<script type="text/javascript">
    $(function () {
        AjaxHtml();
    });
    function AjaxHtml() {
        LoginCheck();
        OnLineCheck();
        setInterval(function () {
            LoginCheck();
        }, 10000);//登录时间显示每10秒更新一次
        setInterval(function () {
            OnLineCheck();
        }, 60000);//在线人数每60秒更新一次
    }
    function LoginCheck() {
        $.post(‘/LoginInfo/LoginCheck‘, {}, function (result) {
            $("#LoginInfo").html(result);
        });
    }
    function OnLineCheck() {
        $("#online").html(‘在线人数 <span style="color:red;">@System.Web.HttpContext.Current.Application["online"]</span>‘);
    }
</script>
时间: 2024-07-29 05:04:59

Asp.net MVC4 记录在线用户数及登录时长的相关文章

从零开始实现asp.net MVC4框架网站的用户登录以及权限验证模块 详细教程

用户登录与权限验证是网站不可缺少的一部分功能,asp.net MVC4框架内置了用于实现该功能的类库,只需要简单搭建即可完成该功能. 下面详细介绍该功能的完成方法,尾部有实例源码下载,希望可以给刚开始接触MVC的朋友做个参考.     第一步:给VS安装MVC4框架 VS2012自带MVC4框架,其他版本可以使用独立安装包进行安装,这里就不讨论了,本例使用VS2013创建,.NET4.0+MVC4 第二步:创建MVC4网站项目         选择文件-新建-项目,按下图示例创建一个空的MVC网

ASP.NET MVC4中使用bootstrip模态框时弹不出的问题

最近发现使用在MVC中使用bootstrip的模态框时弹不出来,但单独建立一HTML文件时可以弹出,说明代码没有问题,经过多次测试发现,在MVC的cshtml文件中添加上以下语句就能正常 @{ Layout=null; } 虽然不知道为什么会这样,至少问题解决了.

3、VS2010+ASP.NET MVC4+EF4+JqueryEasyUI+Oracle项目开发之——用户登录

最近由于项目赶着上线,一直没时间接着写博客,今天终于空出了时间.声名:我不是专业美工,所以界面问题,希望大家不要拍砖.登录界面如下: 在ASP.NET MVC中,要新增一个功能,我们首先要添加一个控制器,AccountController.cs,添加方法:右键单击Controllers文件夹, /// <summary> /// 登录页面 /// </summary> /// <returns></returns> public ActionResult I

Asp.Net MVC4入门指南(9):查询详细信息和删除记录

在本教程中,您将查看自动生成的Details和Delete方法. 查询详细信息和删除记录 打开Movie控制器并查看Details方法. public ActionResult Details(int id = 0) { Movie movie = db.Movies.Find(id); if (movie == null) { return HttpNotFound(); } return View(movie); } Code First 使得您可以轻松的使用Find方法来搜索数据.一个重要

Asp.Net MVC4.0 从入门到精通与项目实战 (Petapoco框架、二维码自定义、Bootstrap视图)视频教程

Asp.Net MVC4.0 从入门到精通与项目实战 (Petapoco框架.二维码自定义.Bootstrap视图)视频教程下载    联系QQ:1026270010 Asp.Net MVC 简介      MVC模式是“Model-View-Controller”的缩写,中文翻译为“模式-视图-控制器”.MVC模式是于20世纪70年代在smaltalk80的GUI设计中被提出的.它包括3个部分:模型(Model).视图(View)和控制器(Controller).MVC模式至今已被广泛使用,A

Asp.Net MVC4入门指南(1): 入门介绍

前言 本教程将为您讲解使用微软的Visual Studio Express 2012或Visual Web Developer 2010 Express Service Pack 1 来建立一个ASP.NET MVC4 Web应用程序所需要的基础知识.建议您使用Visual Studio 2012,你将不再需要安装任何组件,来完成此教程.如果您使用的是Visual Studio 2010,您必须安装下面的组件.您可以通过点击下面的链接,来安装所需的所有组件: Visual Studio Web

【翻译转载】【官方教程】Asp.Net MVC4入门指南(1): 入门介绍

1. Asp.Net MVC4 入门介绍 · 原文地址:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/intro-to-aspnet-mvc-4 · 译文地址:http://www.cnblogs.com/powertoolsteam/archive/2012/11/01/2749906.html VS2012对应MVC4, 请确保工具正确. 前言 本教程将为您讲解使用微软的Visual Studi

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

原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(39)-在线人数统计探讨 系列目录 基于web的网站在线统计一直处于不是很精准的状态!基本上没有一种方法可以确实的统计在线用户! Discuz!NT 在线用户功能算是做得比较好的!参考资料 他的原理大致是根据用户的操作间隔来确定用户是否在线,也可以理解为操作日志,当系统扫描的日志间隔太长将被理解为用户离线,所以要不断的更新操作表和操作表日益增长的烦恼,所以必须定时的清除操作表,当系统启动时要重置表数据!

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

原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(40)-精准在线人数统计实现-[过滤器+Cache] 系列目录 上次的探讨没有任何结果,我浏览了大量的文章和个别系统的参考!决定用Cache来做,这可能有点难以接受但是配合mvc过滤器来做效果非常好! 由于之前的过滤器我们用过了OnActionExecuting这个方法来判断权限 现在在方法被执行后我们用OnActionExecuted来监听用户的操作和刷新用户在线列表 首先下载http://files