ASP.NET Core-如何检测IHostedService在运行时是否崩溃?我可以重新启动吗?

时间:2019-05-26 14:42:44

标签: c# asp.net-core asp.net-core-hosted-services

我将使用this blog post上的代码作为模型在ASP.NET Core网站中实现定时后台服务。完成实际工作的部分如下所示……

protected async Task ExecuteAsync(CancellationToken stoppingToken)
{
    while (!stoppingToken.IsCancellationRequested)
    {
        // Put your code here

        // Wait 30 minutes before running again.
        await Task.Delay(TimeSpan.FromMinutes(30), stoppingToken);
    }
}

这可以正常工作,直到导致服务崩溃为止。显然,在生产应用程序中,您希望不会发生这种情况,但实际上,我需要考虑这种可能性。

据我所知,框架创建并启动了任务,而应用程序的其余部分对此一无所知。我可以检测到IHostedService服务是否崩溃,并且可以重新启动它吗?如果没有,我该怎么办?定期运行此程序对于网站至关重要,因此我需要知道自己可以处理任何问题。

1 个答案:

答案 0 :(得分:0)

  

如果没有,我该怎么办?定期运行此程序对于网站至关重要,因此我需要知道自己可以处理任何问题。

您应该在单独的独立过程中运行关键后台服务 。这可以是Azure Functions或Docker,甚至可以是启用了自动重启的Win32服务。这样,其他会根据需要重新启动您的进程。