내 데이터 세트를 Excel로 변환하고 해당 Excel을 다운로드하려고했습니다. 필요한 Excel 파일을 얻었지만 System.Threading.ThreadAbortException이 모든 Excel 다운로드에서 발생했습니다. 이 문제를 해결하는 방법? .. 도와주세요 ...
내 aspx 화면에서이 메서드를 호출합니다.이 메서드에서 동일한 예외가 발생했습니다.
많은 aspx 화면에서 public void ExportDataSet (DataSet ds) 함수를 호출하고 런타임시 발생하는 예외에 대한 오류 로거 메서드를 유지 관리하고 있습니다. 해당 예외가 .txt 파일에 기록됩니다. 따라서 동일한 예외가 모든 aspx 화면의 txt 파일에 기록됩니다. 메서드 선언 클래스 파일에서 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.End참조하십시오 . 예외는 스택이 풀리는 방식이므로 "예상되는"것입니다 (그러므로 예외를 포착하지 마십시오). [기타] 예외를 포착하려면 다음을 사용하십시오... catch (ThreadAbortException) { throw; /* propagate */ } catch (Exception ex) { .. }