请问各位大神 我想 记录 后台登陆 用户的 在线状态但是新手 不晓得具体咋整 网上搜了一些 大都不怎么详细貌似 好多记录方式 sessionState 的 存储方式 是默认的 InProc 但是这个容易丢失Session(比如修改了文件啥的)用StateServer 的话 Session_End 有不能触发求一个 完整 的 .net 记录在线状态 的 解决办法

解决方案 »

  1.   

    global.asax
    Session_Start
    Session_End用户在线列表
      

  2.   

    login表 login01登入时间  login02在线时间 login03用户id
    login01存登入时间  
    login02首次存登入时间
    在线用户每隔3分钟更新login02为当前时间
      

  3.   

    Session_End 里面 可以判断这个用户的session
    根据他来判断状态
      

  4.   


    有一点 不太理解 望大神 解释教育 ·代码1void Application_Start(object sender, EventArgs e) 
        {
            //在应用程序启动时运行的代码
            
            Hashtable ht = new Hashtable();
           Application["Admin"] = ht;
        }
    请问 这个Application_Start 是每个用户访问站点时 都触发 还是 说 整个站点在重启之前 只触发一次?
      

  5.   

    还有 这段 
    protected void Session_End(Object sender, EventArgs e)
      {
       Hashtable ht = (Hashtable)Application["Admin"];
       foreach(DictionaryEntry item in ht)
       {
        if(DateTime.Parse(item.Key.ToString()).AddSeconds(20)<DateTime.Now)
        {
         ht.Remove(item.Key);
        }
       }
      }这样 貌似 不止 删除了 某个 用户的状态信息 而是 删除了所有key超过20分钟 的 信息
      

  6.   

    在 Session_End 中 如何获得 触发这个事件的 SessionId 呢?我想 Session_End 中 直接只删除 触发的 SessionId 的信息因为 Session 本身 就有超时机制 不需要再判断 是否超过20分钟