【问题标题】:How is session object timeout handled in ASP.NET with SQLServer as sessionState mode?如何在 ASP.NET 中使用 SQLServer 作为 sessionState 模式处理会话对象超时?
【发布时间】:2011-07-30 00:59:14
【问题描述】:

当您在 ASP.NET 应用程序中将 SQL Server 设置为状态处理程序时,会话超时是如何处理的,或者可能在哪里处理?

是 .NET 框架在从数据库加载会话对象后判断对象是否过期,还是 SQL Server 本身的工作负责处理这个问题?我怀疑(甚至考虑)后一种可能性的原因是,创建 ASPState 的脚本提到了一些关于 ASPState_Job_DeleteExpiredSessions 元素的内容。

如果是清理的 SQL Server 作业,该作业多久触发一次,它如何与 web.config 中的超时参数保持一致?

【问题讨论】:

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


    【解决方案1】:

    来自the article,由量子精灵链接:

    SqlSessionStateStore 不会主动监控 Expires 字段。相反,它依赖外部代理来清理数据库并删除过期会话——过期字段包含的日期和时间小于当前日期和时间的会话。 ASPState 数据库包含一个 SQL Server 代理作业,该作业定期(默认情况下,每 60 秒)调用存储过程 DeleteExpiredSessions 以删除过期会话。

    这意味着处理过期和会话对象清除的是 SQL Server,尤其是 SQL 作业代理。

    【讨论】:

      【解决方案2】:

      ASP.NET 会话状态超时仍然在 web.config/machine.config 中配置,无论您是在进程中进行状态还是将其存储在 SQL Server 中。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-01
      • 2016-03-27
      • 1970-01-01
      相关资源
      最近更新 更多