Я попытался преобразовать свой набор данных в Excel и загрузить этот Excel. Я получил требуемый файл Excel. Но System.Threading.ThreadAbortException возникала при каждой загрузке Excel. Как решить эту проблему? .. Помогите, пожалуйста ...
Я вызываю этот метод на моем экране aspx. Он также вызывает такое же исключение.
Я вызываю эту общедоступную функцию void ExportDataSet (DataSet ds) на многих экранах aspx, а также поддерживаю метод регистрации ошибок для исключений, которые возникают во время выполнения, и эти исключения записываются в файлы .txt. То же самое исключение регистрируется во всех текстовых файлах экрана aspx. Я просто хочу, чтобы это исключение не генерировалось из файла класса, объявленного методом, в aspx. Просто я просто хочу обработать это исключение в самом файле класса объявления метода.
Вызов метода файла 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 (и другие ответы); обратите внимание, что исключение «ожидаемо», поскольку именно так раскручивается стек (так что не перехватывайте это исключение). Если вы по-прежнему хотите перехватывать [другие] исключения, используйте:.. catch (ThreadAbortException) { throw; /* propagate */ } catch (Exception ex) { .. }