崩溃后重新启动ASP.NET核心应用程序

问题描述:

我是ASP.NET核心和学习的新手。 只想知道在应用崩溃后是否有重启我的应用的方法?崩溃后重新启动ASP.NET核心应用程序

或者这种情况处理不同?

找不到任何有关此文档,有人可以指点我正确的方向?

如果您将ASP.NET Core应用程序托管在作为IIS的反向代理使用的完整Web服务器之后,它将自动完成。 IIS将收到一个请求并将其发送给您的应用程序,如有必要,请重新启动它。相反,如果你只是使用Kestrel(但它不适合真正的生产),Kestrel会停下来,就是这样,你的应用程序就不存在了。你可以检查伟大的文章:https://weblog.west-wind.com/posts/2016/Jun/06/Publishing-and-Running-ASPNET-Core-Applications-with-IIS

+0

感谢您的回答。我在Ubuntu 16.10服务器上使用Apache。 –

+0

我在Windows下使用IIS,但逻辑应该是一样的,完整的Web服务器(在您的情况下,Apache)应该充当反向代理并处理您的应用程序,并在必要时重新启动它。我在理论上说,虽然我没有尝试,所以如果有人有更多的意见,可能会很有趣。 – Daboul

+1

也许这可能有帮助? https://docs.microsoft.com/en-us/aspnet/core/publishing/apache-proxy(请参阅行重新启动=总是 RestartSec = 10#如果dotnet服务崩溃,10秒后重新启动服务) – Daboul

当您将ASP.NET Core应用程序作为Windows Service托管时,可以将其配置为在服务进程终止时自动重新启动。

在您的代码中,只需执行Environment.Exit(1)来终止进程,然后让托管环境重新启动它。

这是如何配置在其他环境我不知道,但我想大多数主机应该有某种方式可配置。 IIS可能已经做好了准备。

但是,这只适用于没有全部杀死您的进程的异常。请求线程上的异常通常不会导致应用程序崩溃,但是您可能需要关闭它并重新启动,或许您的内存状态可能以异常后的未定义且可能危险的方式结束。