Saya mencoba mengonversi dataset saya menjadi excel dan mengunduh excel itu. Saya mendapatkan file excel yang saya butuhkan. Tetapi System.Threading.ThreadAbortException dinaikkan setiap unduhan excel. Bagaimana cara mengatasi masalah ini? .. Tolong bantu saya ...
Saya memanggil metode ini di layar aspx saya. Ada juga pengecualian yang sama telah dilemparkan oleh metode ini.
Saya menyebut bahwa fungsi ExportDataSet (DataSet ds) public void di banyak layar aspx dan juga saya mempertahankan metode error logger untuk pengecualian yang dimunculkan pada saat runtime, pengecualian tersebut ditulis ke dalam file .txt. Jadi pengecualian yang sama dicatat di semua file txt layar aspx. Saya hanya ingin menghindari pengecualian ini melempar dari metode file kelas yang dideklarasikan ke aspx. Cukup saya hanya ingin menangani pengecualian ini di file kelas deklarasi metode saya itu sendiri.
Metode File ASPX panggilan: excel.ExportDataSet (dsExcel);
Definisi Metode:
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.Endlihat stackoverflow.com/a/3917180/2864740 (dan jawaban lainnya); perhatikan bahwa pengecualiannya adalah "diharapkan" karena begitulah cara tumpukan dibatalkan (jadi jangan tangkap pengecualian itu). Jika Anda masih ingin menangkap pengecualian [lainnya], gunakan:.. catch (ThreadAbortException) { throw; /* propagate */ } catch (Exception ex) { .. }