データセットを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見stackoverflow.com/a/3917180/2864740(および他の回答を)。例外はスタックが解かれる方法であるため、「予期される」ことに注意してください(その例外をキャッチしないでください)。あなたはまだキャッチしたい場合は、[その他]の例外、使用:.. catch (ThreadAbortException) { throw; /* propagate */ } catch (Exception ex) { .. }