当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > asp.net下判断用户什么时候离开,以什么方式离开

ASP.NET
web中缓存的使用
浅谈.net 中的职责链模式的使用
c# 连接字符串数据库服务器端口号
虚拟主机上用Asp.net实现Urlrewrite
ADO.NET Entity Framework存取数据库中图片
.Net基础:.Net开发人员必知的八个网站
.Net Micro Framework中的线程
详解.NET编程过程中的线程冲突
微软 ASP.NET 内置安全架构的完全解析
运行 ASP 时脚本超时问题最终解决办法
.Net应用:制作ASP脚本组件实现重启服务器
.NET 环境下使用C# 防止SQL注入式攻击
利用C#远程存取Access数据库
.Net中图片的快速处理
浅谈对程序开发中异常的理解和认识
C#中的Adapter设计模式浅析
C# 2010命名和可选参数的新特性
.Net基础:学习反射中的动态创建对象
微软 ASP.NET 环境下的页面验证控件
如何在 C# 中发起会议之类的特殊邮件

ASP.NET 中的 asp.net下判断用户什么时候离开,以什么方式离开


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 71 ::
收藏到网摘: n/a

站点用户统计是每一个站点比有得功能,但是很少有人实现在线用户统计得绝对精确或者说是相对精确,基于Web得原理,服务器不会主动知道用户通过关闭浏览器离开站点,这时候只能依靠服务器端变量Session得过期来判断用户是否离开,但用户浏览器是可以知道自己何时关闭得,代码也非常简单
如下:
function body_onunload()
{
if(window.event.clientX<0)
{
alert('the broswer is closing...');
}
else
{
alert('the user is refreshing or navigating away...);
}
}
以上代码就会判断用户是关闭浏览器还是刷新或者导航到其他页面了!

---------------------------------------------------------------------------------------------------
下午的时候,用代码测试了一下,主要是利用上面的js函数,结合ajax技术,由于对ajax技术了解的不是很透彻,前后尝试了三次。
现将尝试结果与大家分享,大家也多给点意见
首先我尝试了在ajax方法中访问Application,企图用Application变量来记录在线人数。尝试代码:
[AjaxPro.AjaxMethod]
public int Logoff()
{
Application["onlineCount"]=Convert.ToInt32(Application["onlineCount"])-1;
return Convert.ToInt32(Application["onlineCount"]);
}
尝试失败!估计是ajax不能访问应用程序的静态变量和Application变量。第一次使用AjaxPro不知道如何设置可以访问Session,以前使用的是ajax.dll,设置成可以读写Session,尝试结果可能发生改变!
第二种我尝试了用文本文件记录在线人数,仍然失败!
第三中,采用数据库!尝试成功。
代码如下:
[AjaxPro.AjaxMethod]
public int Logoff()
{
SqlConnection conn = new SqlConnection("server=.;database=test; uid=sa;pwd=123");
SqlCommand cmd = new SqlCommand("update OnlineCount set num=num-1",conn);
try
{
conn.Open();
cmd.ExecuteNonQuery();
}
catch(Exception ex)
{
EventLog.WriteEntry(ex.Source,ex.Message);
}
finally
{
conn.Close();
}
cmd = new SqlCommand("select top 1 num from OnlineCount",conn);
try
{
conn.Open();
return Convert.ToInt32(cmd.ExecuteScalar());
}
catch(Exception ex)
{
EventLog.WriteEntry(ex.Source,ex.Message);
}
finally
{
conn.Close();
}
return 0;
}
前台页面缩

1 <script language="javascript">
2<!--
3 function leave()
4 {
5 alert(window.event.clientX);
6 if(window.event.clientX<0)
7 {
8 WebApplication3.WebForm1.Logoff().value;
9 }
10 }
11//-->
12 </script>
13 </HEAD>
14 <body onunload="leave()">
这样的话,在对安全行和及时性要求比较严格的情矿下,将一个页面设置为主页面,如果该页面关闭,表示用户已经退出。电子邮件系统就可以使用该方法。