2
什么是在不使用会员控制的情况下在c#中显示谁在线的最简单方法? 唯一的方法是使用会话?显示谁在ASP.NET中在线
什么是在不使用会员控制的情况下在c#中显示谁在线的最简单方法? 唯一的方法是使用会话?显示谁在ASP.NET中在线
是去Global.asax中并创建Application_Start事件User类类型的新List<>
,并保存到缓存
List<User> OnlineUsers = new List<User>();
Cache.Insert ("onlineuser",OnlineUsers,...);
,并在您loginButton代码得到缓存列表中,并添加登录用户
User loggedin =someHelperCode.GetUser (txtUserName.Text,txtPassword.Text);
((List<User>)Cache["onlineuser"]).Add (loggedin);
,并在用户注销时做同样的和删除用户
,你可以直接绑定列表,任何丢失结合的辅ntrol
您可以通过这样做:
var onlineUsers = System.Web.Security.Membership.GetAllUsers()
.Cast<System.Web.Security.MembershipUser>()
.Where(user => user.IsOnline);
但你需要缓存/正确刷新这一点,因为它可以是一个非常昂贵的操作。
如果用户关闭浏览器而不注销会发生什么? – Kaf 2012-03-18 14:45:13
这难道不是线程安全问题吗? – CodesInChaos 2012-03-18 14:45:20
如果用户由于会话过期而退出而不是显式注销,会发生什么情况? (由Kaf殴打 - 下次必须输入更快) – KazR 2012-03-18 14:49:17