【问题标题】:How to Identify that IIS Restarted?如何识别 IIS 已重新启动?
【发布时间】:2009-11-18 17:18:29
【问题描述】:

在我的应用程序中,我将一些与用户会话相关的数据保存在数据库中。当用户注销时,我从数据库中清除了他的所有会话数据。到目前为止,一切顺利。

但是,当 IIS 重新启动时,所有活动会话都将失效,没有机会优雅地清理。

所以,我需要确定 IIS 何时重启才能解决这种情况。

【问题讨论】:

    标签: iis


    【解决方案1】:

    我只想在 global.asax 中的 application_start 事件中添加一些内容

    http://www.codetoad.com/asp.net_globalasax.asp

    您的应用由于某种原因已重新启动,根据您的描述,无论是 IIS 重新启动,还是应用程序池被回收等,它都必须清除数据库中的所有会话。

    您不能相信您的应用程序会在您的 application_end 事件中设置 IIS 已发出重新启动信号的标志,因为有时它不会触发。例如,如果服务器崩溃,或者 IIS 在其控制之外被终止(taskkill),会发生什么情况。

    【讨论】:

    • 我怀疑(但验证这一点会很聪明)他可以在 Application_End 事件中添加一些东西。
    【解决方案2】:

    在存储会话数据的 SQL 服务器上定义了一个 DBNAME_Job_DeleteExpiredSessions 作业。如果您的 SQL 代理服务正在运行,该作业将清除旧会话。 More info

    【讨论】:

      【解决方案3】:

      会话超时怎么办?超时后需要清理吗?还请记住,您不能真正中继 Session.End 事件 - 它仅适用于进程内会话

      【讨论】:

        猜你喜欢
        • 2013-12-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-28
        • 2011-01-01
        • 2019-01-02
        相关资源
        最近更新 更多