IIS部署的ASP.NET Webform会话超时单位为秒而非分钟问题咨询
会话配置120分钟实际120秒超时的原因排查方向
你当前使用InProc模式存储会话,该模式下会话数据和IIS应用程序池进程绑定,进程回收或应用域重启都会直接清空会话,常被误判为会话超时,常见触发原因如下:
- 应用程序池回收/闲置配置异常:打开IIS管理器,定位到站点对应的应用程序池,右键选择「高级设置」:
- 检查
进程模型分类下的*闲置超时(分钟)*配置,若被误设为2(即120秒),站点无请求达到120秒后应用池会自动回收,所有会话丢失 - 检查
回收分类下的定期回收规则,确认是否设置了2分钟的定期回收、或特定时间触发回收的规则
- 检查
- 代码覆盖全局配置:Web.config中配置的
sessionState timeout是全局默认值,若代码中任意位置存在Session.Timeout = 2;的赋值逻辑,会覆盖全局配置,单用户会话超时时间会被改为2分钟,可全局检索代码中Session.Timeout相关赋值排查 - 应用域意外重启:你配置中开启了
debug="true",运行过程中Web.config被修改、bin目录下dll被更新、站点目录内文件变动超过阈值、程序未处理异常崩溃都会触发ASP.NET应用域重启,InProc模式下所有会话会被清空,可查看Windows事件查看器的应用程序日志,确认超时发生的时间点是否存在应用域重启相关日志 - 会话Cookie异常:你配置了
cookieless="false",会话依赖ASP.NET_SessionIdCookie维持,若客户端浏览器禁用Cookie、站点域名/路径变动导致Cookie无法正常携带,每次请求都会生成新的会话,表现为会话超时,可通过浏览器开发者工具的网络面板,查看多次请求携带的ASP.NET_SessionId是否一致
内容的提问来源于stack exchange,提问作者Xie Steven
相关产品推荐
相关产品推荐

