2011-02-02 47 views
28

我有一個VB.NET代碼,當我需要從數據庫中刪除一個對象時調用。在Page_load上,我檢查它是否回發(以防止手動刷新),並且在刪除對象後,我使用Response.redirect重定向到調用者頁面。在這一點上我的代碼引發Response.redirect引發「線程被中止」

例外:發生異常時在 File_delete.aspx.vb行號:34 錯誤消息:線程已被中止 。

,並在事件查看器,我可以看到ASPNET_WP.EXE崩潰:

ASPNET_WP.EXE(PID:1532)停止 意外。

欲瞭解更多信息,請參閱幫助和 支持中心在 http://go.microsoft.com/fwlink/events.asp

目前尚不清楚爲什麼只在這裏發生這種情況,因爲我使用response.redirect也查看文件,而不僅僅是刪除它。

+0

關閉重複http://stackoverflow.com/questions/1433448/thread-was-being-aborted – 2011-02-02 13:17:12

回答

89

默認情況下,Response.Redirect()會中止當前線程。當然,這會拋出一個ThreadAbortException。可以通過傳遞falseResponse.Redirect()來阻止它,它不會中止當前線程。

但請注意這是什麼意思。如果線程未中止,則Response.Redirect()後面的代碼將繼續執行。相應地控制您的邏輯流程。 (這通常與以下重定向return報表和其他流控制指令完成)

13

的Response.Redirect將總是拋出一個ThreadAbortException,根據MSDN文檔,如果你不給「假」布爾值「endResponse」輸入參數HttpRequest.Redirect(字符串,布爾):

只要給「endResponse」參數「false」即可。

+1

這是推薦的方法,在執行Response.Redirect之後,你只需要謹慎地使用它作爲代碼。 – 2011-02-02 13:25:32

0

Response.Redirect拋出異常被設計。沒關係。