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

 更新时间:2007年03月07日 00:00:00   作者:  
站点用户统计是每一个站点比有得功能,但是很少有人实现在线用户统计得绝对精确或者说是相对精确,基于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()"> 
这样的话,在对安全行和及时性要求比较严格的情矿下,将一个页面设置为主页面,如果该页面关闭,表示用户已经退出。电子邮件系统就可以使用该方法。 

相关文章

  • mvc下,3种窗口弹出设置的方法

    mvc下,3种窗口弹出设置的方法

    想做页面美化,特别是在一个页面中,只占了很小一块的页面,想做成弹出窗口样式,稍微总结了下:
    2013-07-07
  • .NET CORE中使用AutoMapper进行对象映射的方法

    .NET CORE中使用AutoMapper进行对象映射的方法

    这篇文章主要给大家介绍了关于.NET CORE中使用AutoMapper进行对象映射的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用.NET CORE具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-04-04
  • 使用C#处理WebBrowser控件在不同域名中的跨域问题

    使用C#处理WebBrowser控件在不同域名中的跨域问题

    我们在做web测试时,经常会使用WebBrowser来进行一些自动化的任务而有些网页上面会用IFrame去嵌套别的页面,这些页面可能不是在相同域名下的,这时就会出现跨域问题,无法直接在WebBrowser中获取到IFrame中的元素,接下来介绍如何解决此问题,需要了解的朋友可以参考下
    2012-12-12
  • Ajax.net Sys未定义错误解决办法

    Ajax.net Sys未定义错误解决办法

    用Asp.net2.0开发的系统,使用了Ajax技术,在本地没有任何问题!但是发布到Web托管服务器上后,系统总是出现“Sys 未定义”的错误!
    2008-09-09
  • asp.net实现DataList与Repeater嵌套绑定的方法

    asp.net实现DataList与Repeater嵌套绑定的方法

    这篇文章主要介绍了asp.net实现DataList与Repeater嵌套绑定的方法,结合实例形式分析了DataList与Repeater的步骤与相关实现技巧,需要的朋友可以参考下
    2016-04-04
  • Asp.net获取当前目录的方法小结

    Asp.net获取当前目录的方法小结

    有时候可能出现找不到类的情况,请引用System.Web.dll
    2013-07-07
  • Visual Studio 2022常见的报错以及处理方案图文详解

    Visual Studio 2022常见的报错以及处理方案图文详解

    许多用户在使用Visual Studio的过程中常会遇到各种问题,下面这篇文章主要给大家介绍了关于Visual Studio 2022常见的报错以及处理方案的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-04-04
  • .NET Core中使用gRPC的方法

    .NET Core中使用gRPC的方法

    gRPC 一开始由 google 开发,是一款语言中立、平台中立、开源的远程过程调用(RPC)系统,所以叫g(google)RPC,这篇文章主要介绍了.NET Core中使用gRPC,需要的朋友可以参考下
    2022-09-09
  • .Net Core Aop之IResourceFilter的具体使用

    .Net Core Aop之IResourceFilter的具体使用

    本文主要介绍了.Net Core Aop之IResourceFilter的具体使用,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • .NET实现魔方游戏(一)之任意阶魔方的表示

    .NET实现魔方游戏(一)之任意阶魔方的表示

    这篇文章主要介绍了.NET实现魔方游戏(一)之任意阶魔方的表示 的相关资料,需要的朋友可以参考下
    2016-02-02

最新评论