浅谈asp.net session time out问题

公司已经在production的一个project最近有client反馈说登陆进网站之后,开着一整天没动它,之后还是可以继续操作。client那边的IT部门要求我们提供session time out方面的设置,以及工作原理。自认为做了5年的web application,clients这个基本的要求可以很快搞定。

1. 检查Web.config文件里面的timeout设置

在system.web下面的sessionState中,可以设置timeout属性。项目中,发现同事把这个值设成了7200。这个数字的单位是minute,同事错以为是second,想设2个小时,却设成了5天。

本以为这个就解释了为什么client开着一整天不去动,之后还可以继续操作的问题。但是后面又接到反馈说,那个网站并不可以开着5天不会time out,有client开着一天多,就time out了。为什么呢?

2. 检查IIS Application Pool的Idle time out设置

这个设置的作用是,application pool在设置的时间范围内没有收到任何请求,就把网站的session time out。默认值是20 minutes。因此,当网站只有一个user登陆进来,之后的20分钟他没有发送任何请求给服务器,而且这20分钟内没有其他user来访问,那么这个user在20分钟后就会time out,而不是web.config设置的5天。

3. 检查IIS Application Pool的Recycling设置

Regular Time Interval这个设置的作用是,IIS在设置的时间到期后,会强制回收所有的资源,进而导致网站session time out。默认值是1740 minutes。很可能这个1740分钟,也就是29小时,是让user time out的原因。前面的Idle time out的值不可以超过这个值。

如果到目前为止我理解都正确,那么一个流量很大的网站,24小时不间断会有用户访问,那每隔29个小时,在recycling期间登录用户的session会丢失。

为了追踪user time out的准确时间,我在global.asax中的session_start和session_end中写入了文本log。需要注意的一点是,这个文本log不可以放在网站所在目录。因为每次网站目录中内容更改会触发session time out。这点让我花了很多时间去google才明白。

 

参考链接:

http://issuesdotnet.blogspot.sg/2012/06/directorydelete-expires-session-solved.html

http://forums.asp.net/t/1742313.aspx?session+expired+problem+after+deleting+a+folder+and+its+sub+folder+programatically+in+asp+net

http://www.thecodeking.co.uk/2011/08/why-sessionend-is-sometimes-called.html#.VG2skYuUfzl

http://stackoverflow.com/questions/19002254/what-is-the-default-expiration-time-of-a-cookie

http://erlend.oftedal.no/blog/?blogid=41

http://stackoverflow.com/questions/19985710/iis-idle-timeout-vs-recycle

http://technet.microsoft.com/en-US/en-en/library/cc771956(v=ws.10).aspx

http://bradkingsley.com/iis7-application-pool-idle-time-out-settings/

http://weblogs.asp.net/owscott/why-is-the-iis-default-app-pool-recycle-set-to-1740-minutes

转载于:https://www.cnblogs.com/liangzi4000/p/4111018.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值