崩溃后重新启动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
答
当您将ASP.NET Core
应用程序作为Windows Service
托管时,可以将其配置为在服务进程终止时自动重新启动。
在您的代码中,只需执行Environment.Exit(1)
来终止进程,然后让托管环境重新启动它。
这是如何配置在其他环境我不知道,但我想大多数主机应该有某种方式可配置。 IIS可能已经做好了准备。
但是,这只适用于没有全部杀死您的进程的异常。请求线程上的异常通常不会导致应用程序崩溃,但是您可能需要关闭它并重新启动,或许您的内存状态可能以异常后的未定义且可能危险的方式结束。
感谢您的回答。我在Ubuntu 16.10服务器上使用Apache。 –
我在Windows下使用IIS,但逻辑应该是一样的,完整的Web服务器(在您的情况下,Apache)应该充当反向代理并处理您的应用程序,并在必要时重新启动它。我在理论上说,虽然我没有尝试,所以如果有人有更多的意见,可能会很有趣。 – Daboul
也许这可能有帮助? https://docs.microsoft.com/en-us/aspnet/core/publishing/apache-proxy(请参阅行重新启动=总是 RestartSec = 10#如果dotnet服务崩溃,10秒后重新启动服务) – Daboul