【发布时间】:2009-11-18 17:18:29
【问题描述】:
在我的应用程序中,我将一些与用户会话相关的数据保存在数据库中。当用户注销时,我从数据库中清除了他的所有会话数据。到目前为止,一切顺利。
但是,当 IIS 重新启动时,所有活动会话都将失效,没有机会优雅地清理。
所以,我需要确定 IIS 何时重启才能解决这种情况。
【问题讨论】:
标签: iis
在我的应用程序中,我将一些与用户会话相关的数据保存在数据库中。当用户注销时,我从数据库中清除了他的所有会话数据。到目前为止,一切顺利。
但是,当 IIS 重新启动时,所有活动会话都将失效,没有机会优雅地清理。
所以,我需要确定 IIS 何时重启才能解决这种情况。
【问题讨论】:
标签: iis
我只想在 global.asax 中的 application_start 事件中添加一些内容
http://www.codetoad.com/asp.net_globalasax.asp
您的应用由于某种原因已重新启动,根据您的描述,无论是 IIS 重新启动,还是应用程序池被回收等,它都必须清除数据库中的所有会话。
您不能相信您的应用程序会在您的 application_end 事件中设置 IIS 已发出重新启动信号的标志,因为有时它不会触发。例如,如果服务器崩溃,或者 IIS 在其控制之外被终止(taskkill),会发生什么情况。
【讨论】:
在存储会话数据的 SQL 服务器上定义了一个 DBNAME_Job_DeleteExpiredSessions 作业。如果您的 SQL 代理服务正在运行,该作业将清除旧会话。 More info
【讨论】:
会话超时怎么办?超时后需要清理吗?还请记住,您不能真正中继 Session.End 事件 - 它仅适用于进程内会话
【讨论】: