Tôi đã cố gắng chuyển đổi tập dữ liệu của mình thành excel và tải xuống excel đó. Tôi đã nhận được tệp excel cần thiết của mình. Nhưng System.Threading.ThreadAbortException đã được nâng lên sau mỗi lần tải xuống excel. Làm thế nào để giải quyết vấn đề này? .. Xin hãy giúp tôi ...
Tôi gọi phương thức này trong màn hình aspx của mình, cũng có một ngoại lệ tương tự được đưa ra bởi phương thức này.
Tôi gọi hàm public void ExportDataSet (DataSet ds) đó trong nhiều màn hình aspx và tôi cũng đang duy trì phương pháp ghi lỗi cho các ngoại lệ được đưa ra trong thời gian chạy ngay những ngoại lệ đó được ghi vào tệp .txt. Vì vậy, cùng một ngoại lệ đó được đăng nhập vào tất cả các tệp txt của màn hình aspx. Tôi chỉ muốn tránh ngoại lệ này ném từ tệp lớp được khai báo phương thức sang aspx. Đơn giản là tôi chỉ muốn xử lý ngoại lệ này tại chính tệp lớp khai báo phương thức của mình.
Phương thức tệp ASPX gọi: excel.ExportDataSet (dsExcel);
Định nghĩa phương pháp:
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
xem stackoverflow.com/a/3917180/2864740 (và các câu trả lời khác); lưu ý rằng ngoại lệ là "được mong đợi" vì nó là cách ngăn xếp được mở ra (vì vậy đừng nắm bắt ngoại lệ đó). Nếu bạn vẫn muốn bắt [khác] trường hợp ngoại lệ, sử dụng:.. catch (ThreadAbortException) { throw; /* propagate */ } catch (Exception ex) { .. }