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

ASP.NET
asp+文件上传增强实例
ASP.NET学习手记:验证用户表单输入
关于Microsoft.NET Beta1与Visual Studio.NET Alpha不兼容
asp+ 操作Cookie 方法大全
asp+ 现在已经被官方正式更名为 asp.net
在ASP+ 中我们如何使用 Class 而不是组件
asp+ 如何跨站抓取 页面
在 ASp+ 中的一些可能会用到的 小函数
列出asp+中所有request 的属性和数值
妙用asp+的global.asax
一个asp+ 版本的 Active Server Explorer
asp+中的session 的使用和原理() 不需要cookie也可以使用session
asp.net 的菜单制作(asp.net 的菜单application)
如何在asp+ 中使用自定义的pagelet
如何使用asp+ 动态创建页面元素
用DataGrid分页
给上次的DataGrid分页增加些功能!
asp+ 利用数据绑定来处理XML文件
两种没有使用绑定的 数据显示
asp+中的hash表操作

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 175 ::
收藏到网摘: 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()">
这样的话,在对安全行和及时性要求比较严格的情矿下,将一个页面设置为主页面,如果该页面关闭,表示用户已经退出。电子邮件系统就可以使用该方法。