在我的应用程序中,我保存了与数据库中的用户会话相关的一些数据。当用户注销时,我清理了数据库中的所有会话数据。到目前为止,非常好。
但是,当IIS重新启动时,所有活动会话都将失效,而无法正常清理。
因此,我需要确定何时重启IIS以解决这种情况。
答案 0 :(得分:1)
我只想在global.asax
中的application_start事件中添加一些东西http://www.codetoad.com/asp.net_globalasax.asp
您的应用由于某种原因已重新启动,并且根据您的说明,无论是从IIS重新启动还是应用程序池获得回收等,都必须清除数据库中的所有会话。
您无法信任您的应用程序设置IIS已在application_end事件中表示重新启动的标志,因为有时它不会触发。例如,如果服务器崩溃,或者IIS在其控制之外被杀死(taskkill),会发生什么。
答案 1 :(得分:0)
在SQL Server上定义了DBNAME_Job_DeleteExpiredSessions
作业,其中存储了会话数据。如果您的SQL代理服务正在运行,该作业将清除旧会话。 More info
答案 2 :(得分:0)
会话超时怎么样?超时后你需要清理吗?还要记住,你无法真正转发Session.End事件 - 它只适用于进程内会话