c# 统计在线用户和其他信息
c#.netb/s中(VisaulStudio.Net2008),怎么统计当前的用户有那些人?要求显示用户的账号,统计总共有多少个人。在网上找了资料说用applicati...
c#.net b/s中(Visaul Studio.Net 2008),怎么统计当前的用户有那些人?
要求显示用户的账号,统计总共有多少个人。
在网上找了资料说用 application 和Session .
看了半天也没搞懂,关于Global.asax的应用我也不太会啊!,哪位大虾能给点详细的资料,先谢谢了!
在数据库中建表统计在线用户的情况,用这种方法可以实现登录进来的用户,可以用户关闭窗口了,没办法执行离开事件及相应的代码。而且,在线用户这些信息是每隔一段时间得刷新的呀!
所以一楼的大虾说的方法我也曾想过,感觉不是很好,看还能不能有其他办法呢?
二楼的大虾,你提供的答案,是个办法,可是我也知道,但是具体如何实现,这才是我想问的关键啊!
三楼的大虾,能否将你的办法具体一点,给点参考代码,再奉献50分。决不食言! 展开
要求显示用户的账号,统计总共有多少个人。
在网上找了资料说用 application 和Session .
看了半天也没搞懂,关于Global.asax的应用我也不太会啊!,哪位大虾能给点详细的资料,先谢谢了!
在数据库中建表统计在线用户的情况,用这种方法可以实现登录进来的用户,可以用户关闭窗口了,没办法执行离开事件及相应的代码。而且,在线用户这些信息是每隔一段时间得刷新的呀!
所以一楼的大虾说的方法我也曾想过,感觉不是很好,看还能不能有其他办法呢?
二楼的大虾,你提供的答案,是个办法,可是我也知道,但是具体如何实现,这才是我想问的关键啊!
三楼的大虾,能否将你的办法具体一点,给点参考代码,再奉献50分。决不食言! 展开
展开全部
在application_start事件中添加如下代码:
Application.Lock();
Application["count"]=0;//记录人数
Application.UnLock();
在session_start事件中添加如下代码:
Application.Lock();
Application["count"]=Convert.ToInt32(Application["count"])+1;
Application.UnLock();
在session_end事件中添加如下代码:
Application.Lock();
Application["count"]=Convert.ToInt32(Application["count"])-1;
Application.UnLock();
所有时间均要在Global.asax.cx中编写
Application.Lock();
Application["count"]=0;//记录人数
Application.UnLock();
在session_start事件中添加如下代码:
Application.Lock();
Application["count"]=Convert.ToInt32(Application["count"])+1;
Application.UnLock();
在session_end事件中添加如下代码:
Application.Lock();
Application["count"]=Convert.ToInt32(Application["count"])-1;
Application.UnLock();
所有时间均要在Global.asax.cx中编写
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
直接在数据库里加上字段,登陆状态(0,代表未登陆,1代表登陆)。
用户登陆时改为1.
然后统计。
用户登陆时改为1.
然后统计。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果你会用remoting的话,可以用这个,有用户登陆的时候,remoting可以给服务器一个反馈,你在编写remoting的时候直接让它返回用户的帐号名就可以了,用户关闭浏览器或者注销的时候也可以给你提示.关于人数的统计也可以用这个方法,有用户登陆的时候计数器加1,用户关闭浏览器的时候减一.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Global.asax中的session_onstart和session_onend中改数据
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
使用application或者session并不是有效的办法,因为即使用户close掉了浏览器,状态还是会继续保存一段时间直至超时的,你自己可以在global中的session_onend中写个事件,然后监测下,会发现基本上很难被触发(即便用户关闭了会话)。
我介绍你个最实用的办法:
1. 客户端登录用户每隔一段时间(可以设置长些,比如5分钟)向服务器端发送一个ping.
2. 服务器端起个Thread,每隔一段时间来收集这些ping(尽量与客户端ping的间隔同步),存储到Hashtable(或数据库,不过效率就低了),如果发现Hashtable中的某个ping长时间未响应(客户端发送中断),那么就可以将此用户的状态置为下线了。
一般的sns社区或IM都是如此实现的,具体的做法你可以参考msnpsharp(msn开源协议)中的用户在线状态检测(虽然是c/s的)。
我介绍你个最实用的办法:
1. 客户端登录用户每隔一段时间(可以设置长些,比如5分钟)向服务器端发送一个ping.
2. 服务器端起个Thread,每隔一段时间来收集这些ping(尽量与客户端ping的间隔同步),存储到Hashtable(或数据库,不过效率就低了),如果发现Hashtable中的某个ping长时间未响应(客户端发送中断),那么就可以将此用户的状态置为下线了。
一般的sns社区或IM都是如此实现的,具体的做法你可以参考msnpsharp(msn开源协议)中的用户在线状态检测(虽然是c/s的)。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
百度一下
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |