Ich habe versucht, mein Dataset in Excel zu konvertieren und dieses Excel herunterzuladen. Ich habe meine erforderliche Excel-Datei erhalten. Aber System.Threading.ThreadAbortException wurde bei jedem Excel-Download ausgelöst. Wie kann ich dieses Problem beheben? .. Bitte helfen Sie mir ...
Ich rufe diese Methode in meinem Aspx-Bildschirm auf. Es gibt auch dieselbe Ausnahme, die von dieser Methode ausgelöst wurde.
Ich nenne diese öffentliche void ExportDataSet (DataSet ds) -Funktion in vielen Aspx-Bildschirmen und behalte auch die Fehlerprotokollierungsmethode für Ausnahmen bei, die zur Laufzeit ausgelöst werden, wenn diese Ausnahmen in eine TXT-Datei geschrieben werden. Daher wird dieselbe Ausnahme in allen txt-Dateien des Aspx-Bildschirms protokolliert. Ich möchte nur vermeiden, dass diese Ausnahme von einer von der Methode deklarierten Klassendatei zu Aspx ausgelöst wird. Ich möchte diese Ausnahme einfach nur in meiner Methodendeklarationsklassendatei selbst behandeln.
Aufruf der ASPX-Dateimethode: excel.ExportDataSet (dsExcel);
Methodendefinition:
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.Endsiehe stackoverflow.com/a/3917180/2864740 (und die anderen Antworten); Beachten Sie, dass die Ausnahme "zu erwarten" ist, da der Stapel so abgewickelt wird (fangen Sie diese Ausnahme also nicht ab). Wenn Sie immer noch [andere] Ausnahmen abfangen möchten, verwenden Sie:.. catch (ThreadAbortException) { throw; /* propagate */ } catch (Exception ex) { .. }