关闭

asp.net 记录用户打开和关闭页面的时间

2254人阅读 评论(3) 收藏 举报

记录打开页面时间:

在Page_Load事件里记录一下。

protected void Page_Load(object sender, EventArgs e){

    if (!Page.IsPostBack)
    {

          //记录用户打开页面时间
           Log_User_Time.SetUserTime(Session, Request, Request.Url.PathAndQuery, DateTime.Now, true);

    }

}

 

记录关闭页面的时间:

通过触发页面的onbeforeunload 事件,JS异步提到处理程序,记录时间。

    window.onbeforeunload = LogUserOutTime;
    var requestObj = null;
    function LogUserOutTime() {
        requestObj = getXMLHttpRequest();
        if (!!requestObj) {         
            requestObj.open("GET", "/LogUserOutTime.ashx", true);
            requestObj.onreadystatechange = reqend;
            requestObj.send(null);
        }
    }

    function reqend() {        
    }

    function getXMLHttpRequest() {
        var xmlRequestObj = null;
        try {
            if (window.ActiveXObject) {
                // Internet Explorer
                try {
                    xmlRequestObj = new ActiveXObject("Msxml2.XMLHTTP");
                } catch (e) {
                    try {
                        xmlRequestObj = new ActiveXObject("Microsoft.XMLHTTP");
                    } catch (e) {
                        throw e;
                    }
                }
            } else if (window.XMLHttpRequest) {
                // Firefox, Opera 8.0+, Safari
                xmlRequestObj = new window.XMLHttpRequest();
            }
        } catch (e) {
        }
        return xmlRequestObj;
    }

 

其它的代码:

LogUserOutTime.ashx 如下所示:

<%@ WebHandler Language="C#" Class="LogUserOutTime" %>

using System;
using System.Collections.Generic;
using System.Web;
using System.Web.SessionState;
using nnbh.BaseComm.CommonClass;
using System.Text;

/// <summary>
/// 记录用户操作时间
/// </summary>
public class LogUserOutTime : IHttpHandler, IRequiresSessionState
{
    #region IHttpHandler 成员

    public bool IsReusable
    {
        get { return false; }
    }

    public void ProcessRequest(HttpContext context)
    {
        context.Response.Cache.SetNoStore();  //设置为不缓存     
       
        Log_User_Time.SetUserTime(context.Session, context.Request, context.Request.UrlReferrer.PathAndQuery, DateTime.Now, false);

        context.Response.Clear();
        context.Response.End();
    }

    #endregion
}

 

此方法在关闭页面和关闭浏览器时都会触发。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:605771次
    • 积分:6703
    • 等级:
    • 排名:第3512名
    • 原创:103篇
    • 转载:123篇
    • 译文:0篇
    • 评论:49条
    最新评论