用C#做的一个web application,需要用用户名口令登陆,如何能够防止用同一个用户名同时在两台电脑登陆系统。如果用session的话,如果客户端登陆后直接关掉IE,session不会马上被清除,所以,可能在5分钟或者10分钟之内,该用户又无法重新登陆,如何解决这一问题?还有,如果是smart client结构的应用,又如何解决呢?谢谢

解决方案 »

  1.   

    http://dotnet.aspx.cc/ShowDetail.aspx?id=CF5FFABC-CFE1-4368-3C13-9B4FCD7C7168
      

  2.   

    上面的网页我看过了,存在我说得关于session的问题:如果用session的话,如果客户端登陆后直接关掉IE,session不会马上被清除,所以,可能在5分钟或者10分钟之内,该用户又无法重新登陆,如何解决这一问题?
      

  3.   

    在Session_End事件中清除Session或者对相应值赋空值
      

  4.   

    好像是用application可以,没有具体代码
      

  5.   

    application 就这个全局变量不可以吗?在IE关的同时那个SEESSION也清除
      

  6.   

    to hsgzs(雾尘心) 
    其实,你的说法是对的,关键问题就在于如何能够在退出的时候确保去清除数据库里面的标记。如果正常点一个按钮退出,那是可以做到的,如果用户之间叉掉IE,如何去清除该记录呢?如果清除不了,那么用户下次就无法登陆了再次重申,session在关闭IE的时候不会马上清除的,有个timeout的时间差。而且,我试了一下,只有使用“InProc”的session模式时,才会出发session_end事件,而我使用的是“StateServer”模式的session,不能触发session_end事件。