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>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM