我试图将数据集转换为excel并下载该excel。我获得了所需的excel文件。但是每次excel下载都会引发System.Threading.ThreadAbortException。如何解决此问题?..请帮助我...
我在aspx屏幕上调用此方法。此方法也引发了相同的异常。
我在许多aspx屏幕中都将其称为public void ExportDataSet(DataSet ds)函数,并且我还在为运行时引发的异常维护错误记录器方法,将这些异常写入.txt文件中。因此,相同的异常记录在所有aspx屏幕的txt文件中。我只是想在方法声明类文件本身中处理此异常。
ASPX文件方法调用:excel.ExportDataSet(dsExcel);
方法定义:
public void ExportDataSet(DataSet ds)
{
try
{
string filename = "ExcelFile.xls";
HttpResponse response = HttpContext.Current.Response;
response.Clear();
response.Charset = "";
response.ContentType = "application/vnd.ms-excel";
response.AddHeader("Content-Disposition", "attachment;filename=\"" + filename + "\"");
using (StringWriter sw = new StringWriter())
{
using (HtmlTextWriter htw = new HtmlTextWriter(sw))
{
GridView dg = new GridView();
dg.DataSource = ds.Tables[0];
dg.DataBind();
dg.RenderControl(htw);
// response.Write(style);
response.Write(sw.ToString());
response.End(); // Exception was Raised at here
}
}
}
catch (Exception ex)
{
string Err = ex.Message.ToString();
EsHelper.EsADLogger("HOQCMgmt.aspx ibtnExcelAll_Click()", ex.Message.ToString());
}
finally
{
}
}
Response.End请参阅stackoverflow.com/a/3917180/2864740(和其他答案);请注意,该异常是“可以预料的”,因为它是取消堆栈堆栈的方式(因此请不要捕获该异常)。如果您仍然想捕获[other]例外,请使用:.. catch (ThreadAbortException) { throw; /* propagate */ } catch (Exception ex) { .. }