请问我现在获取了访问网站的时间,但是怎么获取用户离线的时间?

xiangzi630 2006-12-08 05:51:48
我在:
protected void Session_Start(Object sender, EventArgs e)
里面已经获取了访问网站的时间并写进了数据库,但是我不知道如何得到用户离开网站时候的离线时间,请高手指点谢谢!
...全文
201 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
erictang2003 2006-12-12
  • 打赏
  • 举报
回复
准确的离线时间是拿不到的,可以采用定时刷新的方法
wfyfngu 2006-12-12
  • 打赏
  • 举报
回复
我倒有一个解决办法
但恐怕要影响到性能

namespace Test;
[AjaxPro.AjaxMethod]
public void updateLevelTime()
{
// 更新数据库或存储有用户离线信息的文件
}

客户端代码
<script>
function updateLevelTime()
{
Test.updateLevelTime();
window.setTimeout("updateLevelTime()", 60000);
}
onload = updateLevelTime();
</script>
xiangzi630 2006-12-12
  • 打赏
  • 举报
回复
有做过的人可以教我下吗?
xiangzi630 2006-12-09
  • 打赏
  • 举报
回复
是不是也就是说,实际上用户的离线时间是取不到的?
可以存进数据库的时间只是在用户开起这个网页之后,如果在某个时间段中没有刷新过该页,那么开起页面的时间加上中间的这个时间段,就是用户的离线时间?
wuluhua2003 2006-12-08
  • 打赏
  • 举报
回复
在这个类里定义两个全局变量,
在Session_Start方法里给这两个变量赋上值,
  • 打赏
  • 举报
回复
“大概上面都没有理会你的意思”

我的意思是这个事件根本不是用户离线时发生的。
  • 打赏
  • 举报
回复
Q: 我在Session_End里面取不到时间,有会的请教我谢谢,代码出来下
——————————————————————————————————————————
A: 你要等超过20分钟之后这个事件才触发。

这个事件是可以知道Session被应用程序清除的时间的,但是如果应用程序被清除了,或者客户端退出的时间,使无法知道的。大概上面都没有理会你的意思。

如果你的网站只有一个页面,并且整个网站的页面从来不刷新,那么你可以使用html/javascript端的onunload或者onbeforeunload事件来及时捕获用户退出,在搜索网上有关这个方法的帖子的是注意很多文章不明白告诉你这个条件。

除此以外,比较多的是使用“超时判断”客户离线的方法。某个简单页面的page_load事件中你把用户的最后一次访问时间更新进一个全局的列表中,例如数据库或者static变量中。在每一个页面都要在隐藏的iframe或者Ajax方法访问这个页面,例如10秒钟能够访问一次。后台根据用户最后一次访问的时间是否超时来判断是否宿主页面已经不工作了。
xiangzi630 2006-12-08
  • 打赏
  • 举报
回复
那这里我的条件需要ID寻找,那因该怎么处理?
wuluhua2003 2006-12-08
  • 打赏
  • 举报
回复
session 都没有了,Session["id"]还有值吗,where条件永远都不成立啊
零点逸族 2006-12-08
  • 打赏
  • 举报
回复
你可以查查相关资料,这里面有好多程序是不让用的
零点逸族 2006-12-08
  • 打赏
  • 举报
回复
那就要看你的的程序是不是有错了,在这里调试错误是最麻烦的
你在里面还调用了Session,只是不允许的,好象
wuluhua2003 2006-12-08
  • 打赏
  • 举报
回复
protected void Session_End(Object sender, EventArgs e)
{
string Time = DateTime.Now.ToString();
}
xiangzi630 2006-12-08
  • 打赏
  • 举报
回复
我的sessionstate设置的是InProc 呀,但是还是不行
string strSQL="update aaa set endtime='" + System.DateTime.Now.ToString() + "'where id='" + Session["id"].ToString() + "'";
Session["strSQL"]=strSQL;
data.Connect.BindTable(strSQL);
这个是我在Session_End中写的记录离线时间的代码
零点逸族 2006-12-08
  • 打赏
  • 举报
回复
在会话结束时运行的代码。
注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
InProc 时,才会引发 Session_End 事件。如果会话模式设置为 StateServer
或 SQLServer,则不会引发该事件。
零点逸族 2006-12-08
  • 打赏
  • 举报
回复
用户退出之后会触发Session_End事件
xiangzi630 2006-12-08
  • 打赏
  • 举报
回复
我在Session_End里面取不到时间,有会的请教我谢谢,代码出来下
零点逸族 2006-12-08
  • 打赏
  • 举报
回复
Session_End中写程序记录退出的时间
Eddie005 2006-12-08
  • 打赏
  • 举报
回复
Session_End

62,041

社区成员

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

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

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

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