如题...

解决方案 »

  1.   

    判断一个Session是否过期,你应该在系统一开始时,赋予一个值,比如:
    Session["aa"] = "xx";
    然后在页面代码中判断
    if(Session["aa"] == null)
    {
    //此时代码已经过期
    }
      

  2.   

    我用SQL Server 管理Session状态可以判断SessionID是否过期.
    但是,我不知道那个用户是否已经关闭IE,离开了.
    因为我关掉IE时,Session的过期时间还没到.还有就是客户机意外停电后,那个SessionID还在服务器内存,我的过期时间是20分钟.请问能否在客户机停电的时候,马上让这个Session过期?
      

  3.   

    没有办法,session本身的机制就是如此。
    这个一向是个难题,不是那么容易解决的。
      

  4.   

    你必须建立一个表,每个用户登录进来之后,记录他的ID号,并且在session_end里面,等用户退出的时候,删除他的记录(或停用),如此,每个用户在登录的时候,都到这个表里面去找一下,如果找得到记录,表示已经有人以此ID号登录,即不能再登录。
      

  5.   

    现在还有几个疑问
    如果客户机突然死机,或者停电,非正常状态退出,该怎么删除他的记录呢?环境一:
    假设现在用户死机,用户重启后再登录,表里的记录并不是停用状态,用户的记录还在...
    如果他直接关闭IE,是可以在IE退出之前将记录删除.
    但是好像要在每个页面都要加入这样的功能.(好像不切实际?)
      

  6.   

    是的,比较难实现,除非你在客户端利用XMLHTTP不断的(setTimeout)向服务器请求,服务器可以通过这个请求来判断客户端是否还存在(告诉服务器KeepAlive)或者不断的刷新一个看不见的框架页面也可以达到这个效果。
      

  7.   

    判断一个Session是否过期,你应该在系统一开始时,赋予一个值,比如:
    Session["aa"] = "xx";
    然后在页面代码中判断
    if(Session["aa"] == null)
    {
    //此时代码已经过期
    }
      

  8.   

    没有什么好的办法,或许可以通过服务器和客户端的实时交互来满足你的要求。比如:
    客户端隐藏一个iframe,间隔性地和服务器通信,服务器在一定时间内没有收到客户端的请求以后,就判定为退出。