【異常記錄(九)】 System.Threading.ThreadAbortException: 正在中止線程


報錯如下:

System.Threading.ThreadAbortException: Thread was being aborted. 
at System.Threading.Thread.AbortInternal() 
at System.Threading.Thread.Abort(Object stateInfo) 
at System.Web.HttpResponse.End() 

 

可以 try-catch 一下具體線程報錯:

   catch (ThreadAbortException) { }


 

 

另外, 在微軟的Support里面有相關資料:

症狀

如果使用 Response.End、Response.Redirect 或 Server.Transfer 方法,則出現 ThreadAbortException 異常。 可使用 try-catch 語句捕捉此異常。

原因

Response.End 方法停止頁的執行,並將該執行變換到應用程序的事件管線中的 Application_EndRequest 事件。 Response.End 后面的代碼行將不執行。

此問題出現在 Response.Redirect 和 Server.Transfer 方法中,這是由於這兩種方法都在內部調用 Response.End。

解決方案

若要解決此問題,請使用下列方法之一:

•對於 Response.End,調用 ApplicationInstance.CompleteRequest 方法而不調用 Response.End,以便跳過 Application_EndRequest 事件的代碼執行。

•對於 Response.Redirect,使用重載 Response.Redirect(String url, bool endResponse),對 endResponse 參數它傳遞 false以取消對 Response.End 的內部調用。例如:   Response.Redirect ("nextpage.aspx", false); 如果使用這種解決方法,Response.Redirect 后面的代碼將得到執行。

•對於 Server.Transfer,請改用 Server.Execute 方法。

狀態

這種現象是設計使然。

 

 

 

 

這篇文章中的信息適用於: •Microsoft ASP .NET(包含在 .NET 框架中) 

最近更新: 2002-1-17 (1.0)  關鍵字 kbDSupport kberror kbExceptHandling kbGrpDSASP kbprb kbWebForms KB312629 

Microsoft和/或其各供應商對於為任何目的而在本服務器上發布的文件及有關圖形所含信息的適用性,不作任何聲明。 所有該等文件及有關圖形均"依樣"提供,而不帶任何性質的保證。Microsoft和/或其各供應商特此聲明,對所有與該等信息有關的保證和條件不負任何責任,該等保證和條件包括關於適銷性、符合特定用途、所有權和非侵權的所有默示保證和條件。在任何情況下,在由於使用或運行本服務器上的信息所引起的或與該等使用或運行有關的訴訟中,Microsoft和/或其各供應商就因喪失使用、數據或利潤所導致的任何特別的、間接的或衍生性的損失或任何種類的損失,均不負任何責任,無論該等訴訟是合同之訴、疏忽或其它侵權行為之訴。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM