我原来在web.config中没有设置timeout属性,然后网站在运行一段时间内是能正常与服务器交互操作的,但一定时间(约20分钟吧)不与服务器交互后,网站就不能正常运行了。然后我以为是session值丢失了,在web.config加上了这些代码后: 
<authentication mode="Forms"> 
    <forms  timeout="200"/>
</authentication>
    <sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424"      timeout="200"/>
还是没有效果,到底是怎么回事呢?是我代码错了呢,还是另有原因呢?
    

解决方案 »

  1.   

    呵呵,是这样的,对于服务器来说,每一次请求,都是新的,所以需要客户端用cookie或其它的方法来保存一个凭证,每次访问的时候,服务器就可以得到这个凭证,知道这个请求应该和哪些服务器变量想关联.
    如果你关闭浏览器再请求,那么你有可能得到的是一个新的ID,即新的凭证,这样,服务器就不认为你还是原来的那个用户,当然也不会把这个请求和以前的Session相关联.(这个时候以前的Session也是没有过期的).所以,就会发生你那样的"错误"了...呵呵...
      

  2.   

    谢谢ekinwt的关注。
    可是我没有关闭ie啊,我那个是一个考试系统,由于考试时间比较长,考试过程中又不需要跟服务器交互,只有等点击提交交卷才触发事件提交给服务器的。那对这种情况怎么解决这个问题呢?
      

  3.   

    把Session不要用InProc模式,改成StateServer模式或SQLServer模式,前者需要服务器开ASP.NET STATE SERVICE服务,后者把Session信息存在SQLServer里,都不会丢。
      

  4.   

    关注,为什么啊
    我也遇到这样的问题
    需要时间长一点
    如果服务器没有开state service 怎么办啊
    没有SQL数据库能用SQLSERVER啊?
      

  5.   

    把Session不要用InProc模式,改成StateServer模式或SQLServer模式,前者需要服务器开ASP.NET STATE SERVICE服务,后者把Session信息存在SQLServer里,都不会丢。
    这个很不错了 你要是什么都没有?就装上
      

  6.   

    大哥什么 STATE SERVICE服务 帮帮忙