在ASP.NET应用程序中将SQL Server设置为状态处理程序时,处理会话超时的方式是什么,或者在哪里?
.NET框架是否在从DB加载会话对象后判断对象是否已过期,或者是SQL Server本身的工作是否需要处理?我怀疑(或甚至认为)后一种可能性的原因是,创建ASPState的脚本提到了一些关于ASPState_Job_DeleteExpiredSessions-element的内容。
如果它是一个SQL Server作业清理,这个作业多久会触发一次,它如何与web.config中的timeout参数对齐?
答案 0 :(得分:5)
来自Quantum Elf链接的the article:
SqlSessionStateStore不会主动监视Expires字段。相反,它依赖于外部代理来清除数据库并删除过期的会话 - 其Expires字段包含的日期和时间小于当前日期和时间的会话。 ASPState数据库包括一个SQL Server代理作业,该作业定期(默认情况下,每60秒)调用存储过程DeleteExpiredSessions以删除过期的会话。
这意味着它是处理expriation和会话对象清除的SQL Server,特别是SQL Job Agent。
答案 1 :(得分:0)
无论您是在进程中进行状态还是将其存储在SQL Server中,仍会在web.config / machine.config中配置ASP.NET会话状态超时。