asp.net关闭浏览器后强制用户离线
2013-11-08 21:46
531 查看
asp.net用户登录后,状态更新为在线,在点击程序中退出按钮后自动离线,并记录到日志表中。但是如果强制关闭浏览器,就无法记录。
后来想通过心跳包的方式,在正常登录并在线时每隔一分钟刷新一次登录状态,后台数据库定时2分钟执行一次检测是否异常退出的存储过程,如果最后一次心跳包时间与当前系统时间相比超过3分钟,则强制用户离线。
此方式个人在winform c/s程序中经常使用。
实现核心代码:
在登录后的主页面中定时执行下面的js:
主页面Default.aspx/LogIn方法:
LogOperation.RefreshLoginStatus()
sqlserver定时循环执行存储过程:
后来想通过心跳包的方式,在正常登录并在线时每隔一分钟刷新一次登录状态,后台数据库定时2分钟执行一次检测是否异常退出的存储过程,如果最后一次心跳包时间与当前系统时间相比超过3分钟,则强制用户离线。
此方式个人在winform c/s程序中经常使用。
实现核心代码:
在登录后的主页面中定时执行下面的js:
window.setInterval("RefLogin()", 60000);//登陆后定时注册在线信息 function RefLogin() { $.ajax({ //要用post方式 type: "Post", //方法所在页面和方法名 url: "Default.aspx/LogIn", contentType: "application/json; charset=utf-8", dataType: "json", success: function () { }, error: function (err) { alert(err); } }); }
主页面Default.aspx/LogIn方法:
[WebMethod] public static void LogIn() { LogOperation.RefreshLoginStatus(); }
LogOperation.RefreshLoginStatus()
/// <summary> /// 刷新用户登陆状态 /// </summary> public static void RefreshLoginStatus() { string strID=System.Web.HttpContext.Current.Session["USERID"].ToString(); string strsql = "update t_sysuser set Status='1',RefreshTime=GETDATE() where id='" + strID + "'"; DbHelper.CurrInstance.ExecuteNonQuery(strsql); }
sqlserver定时循环执行存储过程:
ALTER PROCEDURE [dbo].[RefreshLogin] AS BEGIN declare @Id varchar(36) declare @RealName Nvarchar(10) DECLARE curDel CURSOR FOR SELECT ID,Realname FROM t_sysuser where Status='1' and dateadd(minute,-3,GETDATE())>RefreshTime open curDel fetch next from curDel into @Id,@RealName while @@FETCH_STATUS = 0 begin insert into t_log(ID,UserID,RealName,LogTime,Categories,BusinessID,LogContent) values(newid(),@Id,@RealName,GETDATE(),'退出','','强制退出'); update t_sysuser set Status='0' where ID=@Id; fetch next from curDel into @Id,@RealName end close curDel DEALLOCATE curDel END
相关文章推荐
- asp.net如何在用户关闭浏览器时执行Session_End方法
- xmlhttp ASP.NET在线用户列表 关闭浏览器 精确统计 单人登陆
- xmlhttp ASP.NET在线用户列表 关闭浏览器 精确统计 单人登陆
- xmlhttp ASP.NET在线用户列表 关闭浏览器 精确统计 单人登陆
- 在asp.net中能否捕捉用户关闭该页面浏览器的事件?(转)
- asp.net 单点登录,浏览器关闭清空session
- asp.net用户注销或者关闭网页时清除用户Cookie
- ASP.NET SignalR 与 LayIM2.0 配合轻松实现Web聊天室(九) 之 用 Redis 实现用户在线离线状态消息处理(一)
- asp.net在关闭浏览器触发事件 .
- ASP.NET浏览器过滤 与 网站离线
- [ASP.net]用户窗口关闭后Session立即过期
- asp.net用户注销或者关闭网页时清除用户Cookie
- asp.net允许用户输入时,关闭请求检测,RequestValidate="false",且替换"<",">"
- asp.net用户注销或者关闭网页时清除用户Cookie
- ASP.NET取用户浏览器IP地址等信息
- asp.net 判断用户是否使用微信浏览器
- asp.net浏览器后退强制刷新代码
- ASP.NET关闭当前页(兼容IE、谷歌、火狐等主流浏览器)
- asp.net 的那点事(1、当用户在浏览器地址栏输入了网址后,发生了什么?)
- asp.net 的那点事(1、当用户在浏览器地址栏输入了网址后,发生了什么?)