如何在ASP.NET中使用SQLServer作为sessionState模式处理会话对象超时?

时间:2011-04-05 14:31:16

标签: asp.net sql-server session session-state session-timeout

在ASP.NET应用程序中将SQL Server设置为状态处理程序时,处理会话超时的方式是什么,或者在哪里?

.NET框架是否在从DB加载会话对象后判断对象是否已过期,或者是SQL Server本身的工作是否需要处理?我怀疑(或甚至认为)后一种可能性的原因是,创建ASPState的脚本提到了一些关于ASPState_Job_DeleteExpiredSessions-element的内容。

如果它是一个SQL Server作业清理,这个作业多久会触发一次,它如何与web.config中的timeout参数对齐?

2 个答案:

答案 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会话状态超时。