Ho provato a convertire il mio set di dati in Excel e scaricare quell'Excel. Ho ottenuto il mio file Excel richiesto. Ma System.Threading.ThreadAbortException è stata sollevata ogni download di Excel. Come risolvere questo problema? .. Per favore aiutami ...
Chiamo questo metodo nella mia schermata aspx. C'è anche la stessa eccezione generata da questo metodo.
Chiamo quella funzione public void ExportDataSet (DataSet ds) in molte schermate aspx e inoltre sto mantenendo il metodo di registrazione degli errori per le eccezioni che vengono sollevate in fase di esecuzione, proprio quelle eccezioni vengono scritte in un file .txt. Quindi la stessa eccezione viene registrata in tutti i file txt dello schermo aspx.Voglio solo evitare che questa eccezione venga lanciata dal file di classe dichiarato dal metodo ad aspx. Semplicemente voglio solo gestire questa eccezione nel file della classe di dichiarazione del metodo stesso.
Chiamata al metodo file ASPX: excel.ExportDataSet (dsExcel);
Definizione del metodo:
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.Endvedi stackoverflow.com/a/3917180/2864740 (e le altre risposte); nota che l'eccezione è "prevedibile" poiché è il modo in cui la pila viene srotolata (quindi non catturare quell'eccezione). Se desideri ancora.. catch (ThreadAbortException) { throw; /* propagate */ } catch (Exception ex) { .. }