2017-06-01 120 views

回答

2

如果您將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

1

當您將ASP.NET Core應用程序作爲Windows Service託管時,可以將其配置爲在服務進程終止時自動重新啓動。

在您的代碼中,只需執行Environment.Exit(1)來終止進程,然後讓託管環境重新啓動它。

這是如何配置在其他環境我不知道,但我想大多數主機應該有某種方式可配置。 IIS可能已經做好了準備。

但是,這隻適用於沒有全部殺死您的進程的異常。請求線程上的異常通常不會導致應用程序崩潰,但是您可能需要關閉它並重新啓動,或許您的內存狀態可能以異常後的未定義且可能危險的方式結束。