【问题标题】:Auto restart MVC application after server crashes and restarts服务器崩溃并重新启动后自动重新启动 MVC 应用程序
【发布时间】:2019-08-22 16:54:49
【问题描述】:

我在我的 MVC 应用程序中使用了 Quartz 调度,它从 application_start 开始,我将应用程序部署在 IIS 上,以防万一服务器崩溃然后重新启动,如何让我的应用程序自动运行,以便自动重新定时启动

这是我第一次在任何服务器上部署 Quartz 应用程序

protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();

            WebApiConfig.Register(GlobalConfiguration.Configuration);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);

            JobScheduler.Start();
        }

【问题讨论】:

    标签: asp.net-mvc quartz-scheduler


    【解决方案1】:

    如果服务器崩溃,那么在下一个 http 请求时,您的应用程序将重新启动。然后您的JobSchedular 将再次恢复,就像它第一次运行一样。没有什么可做的。

    但是,问题是当服务器崩溃时,您的 AppPool 是否会重新启动。服务器崩溃不是正常情况,不应该发生。不仅是崩溃场景,还有 AppPool 回收 - 整个 Web 应用程序将在下一个 http 请求时重新启动。

    我建议在 IIS AppPool 设置中将 Idle Time-out Action 设置为 Suspend 而不是默认的 Terminate

    服务器恢复后,如果你不想等到下一个 http 请求,那么你将不得不挂钩一个外部触发器来启动应用程序。您可以使用 Windows 计划作业(将访问您网站的 URL)或 3rd 方服务定期访问您的网站。

    如果 AppPool 关闭(停止)发生崩溃后,您将无法从您的 Web 应用程序代码中执行任何操作。

    【讨论】:

      最近更新 更多