我们accashing底层有个重载页面的异常处理:
try
{
base.RaisePostBackEvent(sourceControl, eventArgument);
}
catch (System.Threading.ThreadAbortException e)
{
//捕捉线程异常,忽略重定向等引发的异常
}
catch (Exception ex)
{
// 记录错误日志
CLogHelper.WriteException("Ctrip.Business.AccCashingBaseUI.AccCashingBasePage.RaisePostBackEvent", ex, m_Module, m_ModuleManagement.GetExceptionID(m_Module, m_ErrorCode));
// 显示错误信息
//DisplayMessage(false, "系统错误", "产生一个系统错误");
throw (new Exception(ex.ToString()));
}
在做页面跳转的时候都会到System.Threading.ThreadAbortException 这个exception,我们可以按照下面的方式去解决:
http://support.microsoft.com/kb/312629/en-us
To work around this problem, use one of the following methods:
· For Response.End, call the HttpContext.Current.ApplicationInstance.CompleteRequest method instead of Response.End to bypass the code execution to the Application_EndRequest event.
· For Response.Redirect, use an overload, Response.Redirect(String url, bool endResponse) that passes false for the endResponse parameter to suppress the internal call to Response.End. For example:
· Response.Redirect ("nextpage.aspx", false);
If you use this workaround, the code that follows Response.Redirect is executed.
· For Server.Transfer, use the Server.Execute method instead.
最后种方法我尝试过了,的确可以不抛出这个线程abort错误。