我最近做的一个项目,在用户登陆后会在session中保存用户信息。
我在web.config中设定系统的超时时间为一分钟:
    <sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" cookieless="false"  timeout="1" />在用户登陆后。系统主页面会每分钟刷新一次。那么。按理说。由于每分钟用户的页面都会回传一次。那么。只要用户不关闭窗口。则Session会永不超时。应该是这样吧?
可是现在的情况是这样的。用户在前几次回传的时候。一般都没有问题。session里仍然保存着用户信息。可是。大概过十来分钟以后,也就是回传了几次之后。session就失效了。程序也随即出错。就问这是什么原因呢?我就想做到只要用户不关闭窗口,则session永不失效的效果。应该怎么做?多谢!!!

解决方案 »

  1.   

    timeout=0就行了,也不用刷页面了
      

  2.   

    这样不行啊。我的项目中还有一个在线人员的功能。我想要的效果是:
    如果用户不关闭页面。那么由于每一分钟会自动回传一次,而session的超时时间正好是一分钟。那么用户的session是永远不会超时的,因此用户保存在session 中的值将会一直保留着。而如果用户关闭的页面。那么一分钟之后session超时,系统才知道用户己离线。才能执行清除在线人员的操作。而如果把timeout设为0,那么如果用户关闭窗口。将没有机会清除在线人员等信息。
      

  3.   

    我想你可以在global.ascx中定义session_end,这样的话用户一关闭窗口就会触发这个事件,那么我们知道,该用户已经离开了!
      

  4.   

    session是永远不会超时的,因此用户保存在session 中的值将会一直保留着。