解决ASP.NET 输出"Thread was being aborted. "异常问题
由Response.Redirect或Response.End引发的"Thread was being aborted. "异常
string _sql =string.Empty;
SqlConnection conn = SqlHelper.dbconn();
try
{
conn.Open();
_sql = "sql 语句";
SqlCommand cm = new SqlCommand(_sql,conn);
cm.ExecuteNonQuery();
function.Response("<center>执行成功</center>");
cm.Dispose();
Response.End(); //这样子会显示"Thread was being aborted. "异常
}
catch (Exception ex)
{
Response.write(ex.Message);
}
finally
{
conn.Close();
conn.Dispose();
}
改成如下方面即可跳过异常
string _sql =string.Empty;
SqlConnection conn = SqlHelper.dbconn();
try
{
conn.Open();
_sql = "sql 语句";
SqlCommand cm = new SqlCommand(_sql,conn);
cm.ExecuteNonQuery();
function.Response("<center>执行成功</center>");
cm.Dispose();
Response.End();
}
catch (Exception ex)
{
if (!(ex is System.Threading.ThreadAbortException)) //关键这句
{
Response.write(ex.Message);
}
}
finally
{
conn.Close();
conn.Dispose();
}
以下来自网络:
代码对于 Response.End,调用 HttpContext.Current.ApplicationInstance.CompleteRequest 方法而不是 Response.End 以跳过 Application_EndRequest 事件的代码执行。
代码
对于 Response.Redirect,请使用重载 Response.Redirect(String url, bool endResponse),该重载对 endResponse 参数传递 false 以取消对 Response.End 的内部调用。例如:
改成如下代码也可以
Response.Redirect ("nextpage.aspx", false);
代码对于 Server.Transfer,请改用 Server.Execute 方法。
本文版权归学IT网(www.xueit.com)所有,任何单位与个人转载必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。