程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> asp.net在使用Response.Redirect try{}catch{}塊失效

asp.net在使用Response.Redirect try{}catch{}塊失效

編輯:關於ASP.NET
try 

{ 

…

Response.Redirect("/mymaimai.aspx"); …

} 

catch (Exception e)

{ 

// 異常處理

}

使用以上語句,不管是否有異常,都會執行catch中的,一直顯示""失敗"",都會拋出 System.Threading.ThreadAbortException,原因如下:

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 ("/mymaimai.aspx", false);如果使用這種解決方法,Response.Redirect 後 面的代碼將得到執行。

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

狀態

這種現象是設計使然。

解決後的代碼:

try 

{ 

Response.Redirect("/mymaimai.aspx",false); 

} 

catch  

{ 

// 異常處理

}
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved