Response.End causing System.Threading.ThreadAbortException
本文关键字:Threading ThreadAbortException System causing End Response | 更新日期: 2023-09-27 18:21:27
我在button''uClick()方法中有一个try-catch,我使用EPPlus将一些数据保存到Excel电子表格中。
try
{
.... Some calculations here...
//Create Excel output.
Response.Clear();
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("content-disposition", "attachment; filename=Report " +
DateTime.Today.Day.ToString() + "-" + DateTime.Today.Month.ToString() + "-" +
DateTime.Today.Year.ToString() + " " + DateTime.Now.Hour + "-" +
DateTime.Now.Minute + "-" + DateTime.Now.Second + ".xlsx");
package.SaveAs(Response.OutputStream);
Response.End();
}
cach()
{
LogException();
}
我得到一个错误System.Threading.ThreadAbortException,这是因为上面的Response.End(),我得到的。
真正令人讨厌的是,尽管在我的开发机器上,它仍然会输出文件,但当我把网站放在服务器上时,它会记录错误,页面会无限加载,永远不会吐出文件。
有人知道那里出了什么问题吗?
只需捕获ThreadAbortException
,什么也不做。您可以放心地忽略此异常。
编辑:删除日志,或添加不登录ThreadAbortException
的复选框
catch(Exception ex){
if (ex is System.Threading.ThreadAbortException)
{
//do nothing
return;
}else{
LogException(ex);
}
}
当Response.RRedirect或Response.End在try块中时,执行catch块中的代码。
您可以捕获并吸收此TreadAbortException。
您也可以考虑添加一个finally块来结束响应,而不是在try中使用它。如果发现异常,可以修改响应并向客户端发回错误。