try { Response.Redirect("~/Message/MSG.aspx?msg=個人資料更新成功&pt=1",true); } catch { Response.Redirect("~/Message/MSG.aspx?msg=個人資料更新失敗&pt=0"); }
try { Response.Redirect("~/Message/MSG.aspx?msg=個人資料更新成功&pt=1",true); } catch { Response.Redirect("~/Message/MSG.aspx?msg=個人資料更新失敗&pt=0"); }
使用以上語句,不管是否有異常,都會執行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 方法。 狀態 這種現象是設計使然。 解決后的代碼: try { Response.Redirect("~/Message/MSG.aspx?msg=個人資料更新成功&pt=1",false); } catch { Response.Redirect("~/Message/MSG.aspx?msg=個人資料更新失敗&pt=0"); }
|