ASP.NET應用程序應該如何處理髮生在非請求後臺線程上的未處理異常(由於缺陷)?如何在ASP.NET中處理未處理的線程異常?
默認情況下,這些異常會導致進程終止。 在設置ASP.NET工作進程時,這是不可接受的,因爲併發運行的請求會以不可預測的方式中止。這也是一個性能問題。
請求線程的異常不是問題,因爲ASP.NET處理它們(通過顯示錯誤頁面)。
AppDomain.UnhandledException
事件允許觀察發生了異常,但在此時無法阻止終止。
這是一個需要粘貼到ASPX頁面代碼隱藏的repro。
protected void Page_Load(object sender, EventArgs e)
{
var thread = new Thread(() =>
{
throw new InvalidOperationException("some failure on a helper thread");
});
thread.Start();
thread.Join();
}
我知道的唯一解決方案是永遠不會讓異常「逃脫」未處理。有沒有其他更全面徹底的解決方案呢?
我遇到同樣的問題......奇怪的是,asp.net團隊從來沒有考慮過解決這個問題。我有第三部分http模塊,在某些時候失敗並拋出異常,導致工作進程顯示「服務不可用」!!! –