Я спробував перетворити свій набір даних в Excel і завантажити цей Excel. Я отримав необхідний файл Excel. Але System.Threading.ThreadAbortException піднімався під час кожного завантаження Excel. Як вирішити цю проблему? .. Будь ласка, допоможіть мені ...
Я викликаю цей метод на моєму екрані aspx.Також цей же виняток викликав цей метод.
Я називаю цю публічну порожню функцію ExportDataSet (DataSet ds) на багатьох екранах aspx, а також я підтримую метод реєстрації помилок для винятків, які виникають під час виконання, ці винятки записуються у файли .txt. Таким чином, той самий виняток реєструється у всіх 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.Endsee stackoverflow.com/a/3917180/2864740 (та інші відповіді); зауважте, що виняток "очікуваний", оскільки це спосіб розмотування стека (тому не вловлюйте цей виняток). Якщо ви все ще хочете вловити [інші] винятки, використовуйте:.. catch (ThreadAbortException) { throw; /* propagate */ } catch (Exception ex) { .. }