ฉันพยายามแปลงชุดข้อมูลของฉันเป็น excel และดาวน์โหลด excel นั้นฉันได้รับไฟล์ excel ที่ต้องการ แต่ System.Threading.ThreadAbortException ถูกเพิ่มขึ้นทุกการดาวน์โหลด excel จะแก้ไขปัญหานี้อย่างไร? .. โปรดช่วยฉันด้วย ...
ฉันเรียกวิธีนี้ในหน้าจอ aspx ของฉันนอกจากนี้ยังมีข้อยกเว้นเช่นเดียวกันกับวิธีนี้
ฉันเรียกมันว่าฟังก์ชัน ExportDataSet (DataSet ds) ที่เป็นโมฆะสาธารณะในหลาย ๆ หน้าจอ aspx และฉันยังคงรักษาวิธีการบันทึกข้อผิดพลาดสำหรับข้อยกเว้นที่เพิ่มขึ้นในรันไทม์ที่ถูกต้องข้อยกเว้นเหล่านั้นจะถูกเขียนลงในไฟล์. txt ดังนั้นข้อยกเว้นเดียวกันนี้จึงถูกบันทึกในไฟล์ txt ของหน้าจอ aspx ทั้งหมดฉันแค่ต้องการหลีกเลี่ยงข้อยกเว้นนี้ที่โยนจากไฟล์คลาสที่ประกาศไปยังวิธี aspx ฉันแค่ต้องการจัดการข้อยกเว้นนี้ที่ไฟล์คลาสการประกาศเมธอดของฉันเอง
ASPX File Method เรียก: 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) { .. }