当前位置: 代码迷 >> ASP.NET >> 可不可以设置session永不超时?怎么设置那
  详细解决方案

可不可以设置session永不超时?怎么设置那

热度:9629   发布时间:2013-02-25 00:00:00.0
可不可以设置session永不超时?如何设置那?
可不可以设置session永不超时?如何设置那?

------解决方案--------------------------------------------------------
设置web.config
<sessionState
mode= "InProc "
stateConnectionString= "tcpip=dbserver:42424 "
sqlConnectionString= "data source=dbserver;Trusted_Connection=yes "
cookieless= "false "
timeout= "20 "
/>
设置 timeout
------解决方案--------------------------------------------------------
保存在数据库中或者状态服务器中
------解决方案--------------------------------------------------------
为什么要这样做,那万一用户关掉浏览器怎么办?

这个是典型的内存泄露,那些已经关掉浏览器的session你要怎么清掉?

要知道,当用户再次打开浏览器时,就是一次新的会话,会用新的session(sessionid不同)而不是原来的,如果你不让过期,那么,你的内存里会存N多无用的session~~~~
------解决方案--------------------------------------------------------
保存到数据库 xml文件

不能用不超时
session在服务器上会丢失
------解决方案--------------------------------------------------------
ajax刷新session
------解决方案--------------------------------------------------------
用cookie代替session

session用不超时,应用迟早要崩溃
------解决方案--------------------------------------------------------
session永不超时设置-1就好

不过还有一个一定要保证,如果你的Session是放在SessionState里面的SessionState一定不能重启,重启就没了
如果放在IIS,那么IIS也不能回收,一回收也没了

所以想保证永不超时Session几乎无法办到,
所以还是cookie超时设置成-1比较好
------解决方案--------------------------------------------------------
且不说,即使设置 TimeOut = 无穷大,是否真的可以不超时,因为Session有时候会莫名其妙丢失,
Session 用不超时,应用迟早要崩溃!!

假如你希望,用户保持浏览器打开着,即使不做任何请求,Session 就保持不超时,那么使用
AJAX 或者隐藏的iframe 做一个定时请求(刷新),以告诉服务器,浏览器打开着,
------解决方案--------------------------------------------------------
MSDN 说拉 HttpSessionState.Timeout 属性不能设置为超过 525,600 分钟(1 年)的值。

------解决方案--------------------------------------------------------
数据库最保险
  相关解决方案