首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

解決 Response.Redirect 在 try-catch 中總被捕獲 ThreadAbortException 的三種方案

     編輯:關於ASP.NET

問題原因

Response.Redirect 內部呼叫 Response.End(),導致執行緒中止,拋出 ThreadAbortException,必然進入 catch 區塊。

三種解決方案

  1. ApplicationInstance.CompleteRequest():跳過 Application_EndRequest,不中止執行緒。
    Response.Redirect(url); Context.ApplicationInstance.CompleteRequest();
  2. Response.Redirect(url, false):endResponse=false 避免內部呼叫 Response.End(),後續程式碼可繼續執行。
    Response.Redirect("/mymaimai.aspx", false);
  3. Server.Execute():替代 Server.Transfer(),不中止當前請求。

修正程式碼

try 
{
    Response.Redirect("/mymaimai.aspx", false);
}
catch 
{
    // 真正的例外處理
}

微軟設計使然,採用方案二最簡潔且語意明確。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved