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

來源:互聯網
上載者:User

http://www.cnblogs.com/jkswjw/archive/2009/03/05/1403639.html

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 
{
// 異常處理

}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.