求一在线用户列表显示的思路

aspxbbs123 2009-03-27 09:56:16
想要的结果是: 在onlineuser.aspx页面上显示:

在线用户列表为:

张三 2009-01-01 10:10 李四 2009-01-01 11:11
王武 2009-01-01 10:30 王六 2009-01-01 12:10


总在线用户数为:4人


像这一类问题主要存在:
1、用户离开电脑一会儿,而IE一直是打开着
2、电脑死机了
3、用户没有按退出按钮
4、用户强制关闭IE

想请教一下前辈在项目中是如何处理用户在线情况呢?最好给详细一点的方法和代码





...全文
161 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
dl_wang 2009-03-27
  • 打赏
  • 举报
回复
没法做到精确的实时显示的,总会有一个时间差。因为session过期是有时间的。我认为是没办法做到精确的。如果是在一定时间范围内的话就采用一楼的方法
CutBug 2009-03-27
  • 打赏
  • 举报
回复
http://www.opent.cn/a/2009/2/5/566.shtml
路人乙e 2009-03-27
  • 打赏
  • 举报
回复
使用全局变量记录,比如application
在session_end中移除用户信息
fdsgfdgfdsgfd 2009-03-27
  • 打赏
  • 举报
回复
路过。。
aspxbbs123 2009-03-27
  • 打赏
  • 举报
回复
在 Global.asax 中

void Application_Start(object sender, EventArgs e)
{
System.Collections.Generic.List<OnlineUser> list = new System.Collections.Generic.List<OnlineUser>();
Application["online"] = list;
}



void Session_Start(object sender, EventArgs e)
{

OnlineUser model = new OnlineUser();
model.UserName = Session["UserName"].ToString();
model.LoginTime = DateTime.Now;
System.Collections.Generic.List<OnlineUser> list1 = (System.Collections.Generic.List<OnlineUser>)Application["online"];


foreach (OnlineUser li in list1)
{
if (li.UserName.Trim().Equals(Session["UserName"].ToString()))
{
list1.Add(model);
Application.Lock();
Application["online"] = list1;
Application.UnLock();

}
}


}

运行 login.aspx 出错为:未将对象引用设置到对象的实例。

aspxbbs123 2009-03-27
  • 打赏
  • 举报
回复
在 login.cs 中
protected void BtnLogin_Click(object sender, EventArgs e)
{
Session["userName"]=TextBox1.Text;
}

在 Global.asax 中
void Session_Start(object sender, EventArgs e)
{
String tem=Session["userName"].ToString();
}

运行 login.aspx 出错为:未将对象引用设置到对象的实例。

62,268

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧