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>