Próbowałem przekonwertować mój zestaw danych do programu Excel i pobrać ten plik Excel. Otrzymałem wymagany plik programu Excel, ale System.Threading.ThreadAbortException był podnoszony przy każdym pobieraniu programu Excel. Jak rozwiązać ten problem? .. Pomóż mi ...
Wywołuję tę metodę na moim ekranie aspx.There także ten sam wyjątek został zgłoszony przez tę metodę.
Wywołuję tę publiczną funkcję void ExportDataSet (DataSet ds) na wielu ekranach aspx, a także utrzymuję metodę rejestratora błędów dla wyjątków, które są zgłaszane w czasie wykonywania, a te wyjątki są zapisywane w plikach .txt. Tak więc ten sam wyjątek jest rejestrowany we wszystkich plikach txt ekranu aspx.I chcę tylko uniknąć tego wyjątku zgłasza z pliku klasy zadeklarowanej metody do aspx. Po prostu chcę obsłużyć ten wyjątek w moim pliku klasy deklaracji metody.
Wywołanie metody pliku ASPX: excel.ExportDataSet (dsExcel);
Definicja metody:
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.Endzobaczyć stackoverflow.com/a/3917180/2864740 (i innych wskazań); zwróć uwagę, że wyjątek jest „oczekiwany”, ponieważ jest to sposób rozwijania stosu (więc nie łapaj tego wyjątku). Jeśli nadal chcesz złapać [inne] wyjątki, użyj:.. catch (ThreadAbortException) { throw; /* propagate */ } catch (Exception ex) { .. }