asp.net统计在线人数,登陆时间,退出时间如何实现?请高手指点!谢谢!
考虑非正常退出!

解决方案 »

  1.   

    估计没什么东西能确确实实的统计到!建议用个全局应用程序!Global.asax文件!就可以非常容易获得! 
    在最开始定义APPLIACTION["ONLINE"]=0在sessionSTAR事件写:application["online"].lock() 
    再获取值+1然后application["online"].Unlock() 
    在结束时重复上面的动作!在程序中访问这个就不用我写了! 
    希望能帮助到你!
    统计时间也是这样统计的哦!
      

  2.   

    1、统计在线人数:
    <%@ Page Language= "c# " debug= "true " %> 
    <html> 
    <head> 
    <SCRIPT LANGUAGE= "c# " RUNAT= "server "> 
    private void Page_Load(object sender, System.EventArgs e) 

    Visitors.Text = "本站当前有: <b> " + Application[ "user_sessions "].ToString() + " " + "</b> 位访问者 ! "; 

    <title>在线用户</title> 
    </head> 
    <body> 
    <asp:label " runat= "server " /><br> 
    </body> 
    </html> global.asax文件下
    <script language= "c# " runat= "Server "> 
    protected void Application_Start(Object sender, EventArgs e) 

    Application[ "user_sessions "] = 0; 

    protected void Session_Start(Object sender, EventArgs e) 

    Application.Lock(); 
    Application[ "user_sessions "] = (int)Application[ "user_sessions "] + 1; 
    Application.Unlock(); 

    protected void Session_End(Object sender, EventArgs e) 

    Application.Lock(); 
    Application[ "user_sessions "] = (int)Application[ "user_sessions "] - 1; 
    Application.Unlock(); 

    </script> 
      

  3.   

    如果您是使用的ASP.net自带的验证控件的话:使用Membership类的相关方法
    目前在线人数:Membership.GetNumberOfUsersOnline();
    当前用户在线时长:Membership.UserIsOnlineTimeWindow;
    取得当前登录用户的相关信息:使用MembershipUser类    protected void Page_Load(object sender, EventArgs e)
        {
    //若用户通过验证,则显示相关信息
    if (User.Identity.IsAuthenticated)
    {
    MembershipUser myUser = Membership.GetUser();
    if (myUser.UserName != null)
    {
    Response.Write("用户帐号:" + myUser.UserName + "<BR>");
    Response.Write("电子邮件信箱:" + myUser.Email + "<BR>");
    Response.Write("密码提示问题:" + myUser.PasswordQuestion + "<BR>");
    Response.Write("是否允许验证:" + (myUser.IsApproved == true ? "允许" : "不允许") + "<BR>");
    Response.Write("用户是否在线:" + (myUser.IsOnline == true ? "在线" : "离线") + "<BR>");
    Response.Write("帐号创建时间:" + myUser.CreationDate + "<BR>");
    Response.Write("上一次登录日期:" + myUser.LastLoginDate + "<BR>");
    Response.Write("上一次操作日期:" + myUser.LastActivityDate + "<BR>");
    Response.Write("上一次退出日期:" + myUser.LastLockoutDate + "<BR>");
    Response.Write("密码更改上一次日期:" + myUser.LastPasswordChangedDate + "<BR>");
    Response.Write("帐号是否锁定:" + (myUser.IsLockedOut == true ? "被锁定" : "无锁定") + "<BR>");
    } new AlertMessage().showMsg(this.Page, "帐号密码验证成功!");
    }
    else
    {
    new AlertMessage().showMsg(this.Page, "请进行帐号登录!");
    FormsAuthentication.RedirectToLoginPage();
    }
        }
      

  4.   

    在线人数 用application记录,同一ip同一时间只记录一个数(不知道行不行)
    登录时间 那就是登陆按钮的事件里写了,每当点击登陆后把时间记录下来
    退出时间 一是设计一个退出按钮,点击以后记录一下时间;二是没点击的时候页面销毁时记录一下时间
      

  5.   

    在主框架中寫個JS   xmlHttp,10秒提交一個,將數據寫到數據庫中,然後比較提交時間,刪除提前時間減10秒的數據,剩下的應該就是當前在線用戶了
      

  6.   

    http://bbs.51aspx.com/showtopic-1900.html
      
      

  7.   

    考虑非正常退出 这一点没法做到及时性,可能用户直接按IE的 x 直接关闭,可能系统死机了,所以要统计这些信息只能说是大约的,不是很真实的.
      

  8.   

    数据库表 中加 2个字段来记录登录、和退出时间, updeate 更新