我的程序用的frameset框架,登录用的是membership,登录成功用session记录当前登录人的id。问题来了,当身份还没有过期的时候session丢失了,这样程序用到session时就出错啦!身份认证时间是20分钟,session也是20分钟。
在网上找的答案说可以用“ASP.NET 状态服务”保存session,我这样做了还是丢失,真是莫名其妙,求高手指点呀。

解决方案 »

  1.   

    session保存验证码也会丢失  据说是session的处理机制所致  用cookie
      

  2.   


    <sessionState
          mode="InProc"
          timeout="20"
          stateConnectionString="tcpip=192.168.0.30:11222;"
          >可以通过单独的session服务器来保存session,或者保存在数据库
      

  3.   

    如果单用session。只能是先把失效时间改大点再把数据访问层中各个connnection、reader都检查一下。。确保都关闭了而脸Dispose;再就是服务器及时清空资源。。这样会好点最好是用sql方式保存session
      

  4.   

    如果Bin文件夹内容改变,web.config改变,控制Session的线程崩溃自动重启,都会导致Session丢失
    ASP.NET 状态服务 需要服务器打开才能用
    比较推荐用加密的Cookie来记录或用SQL Server记录Session
      

  5.   

    从头到尾只要不更新网站不会丢失的:
    建一script.aspx文件,啥也不写
    在你页面上写入以下JS:function handsession()
    {
    var objScript = document.createElement('script');
    objScript.language = 'javascript';
    objScript.src = "script.aspx";
    document.body.appendChild(objScript);
    }
    setTimeout('handsession()',100000);
      

  6.   

    function handsession()
    {
    var objScript = document.createElement('script');
    objScript.language = 'javascript';
    objScript.src = "script.aspx";
    document.body.appendChild(objScript);
    setTimeout('handsession()',100000);
    }
    handsession();少写了
      

  7.   

    membership ???哎,自动的功能没几个好用的
      

  8.   

    是否是跟重定向有关呢 self.location.href="xxx" 
      

  9.   

    在配置配置文件里面有个设置session过期时间的属性 不过MS的Session也有BUG 就是向楼主说的这种情况,有两种方法可以解决这个BUG 一种是你可以直接将session放在数据库 还有一种就是采用state session
      

  10.   


    session有一个有效期时间,不过这只是理想状态,正常情况下,服务器负载过大,资源消耗过高,或其它因素导致应用程序域重载时,session都会丢失.这是应用环境中非常正常的,常见的.
    所以 除非是管理员登录后台,需要较高的安全级别,大多数网站都是通过cookie保存相关信息.
    用session,真的是 赔了夫人又折兵
      

  11.   

    综合考虑还是改用cookie吧,谢谢大家