J'ai essayé de convertir mon ensemble de données en Excel et de télécharger cet excel. J'ai obtenu mon fichier Excel requis, mais System.Threading.ThreadAbortException a été soulevé à chaque téléchargement Excel. Comment résoudre ce problème? .. Aidez-moi s'il vous plaît ...
J'appelle cette méthode dans mon écran aspx. La même exception a également été levée par cette méthode.
J'appelle cette fonction publique void ExportDataSet (DataSet ds) dans de nombreux écrans aspx et je maintiens également la méthode d'enregistrement des erreurs pour les exceptions qui sont déclenchées au moment de l'exécution, ces exceptions sont écrites dans des fichiers .txt. Donc, cette même exception est enregistrée dans tous les fichiers txt de l'écran aspx.Je veux juste éviter que cette exception ne soit lancée depuis le fichier de classe déclaré par la méthode vers aspx. Je veux simplement gérer cette exception dans mon fichier de classe de déclaration de méthode lui-même.
Appel de méthode de fichier ASPX: excel.ExportDataSet (dsExcel);
Définition de la méthode:
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.Endvoir stackoverflow.com/a/3917180/2864740 (et les autres réponses); notez que l'exception est "à prévoir" car c'est la façon dont la pile est déroulée (donc n'attrapez pas cette exception). Si vous souhaitez toujours intercepter [autres] exceptions, utilisez:.. catch (ThreadAbortException) { throw; /* propagate */ } catch (Exception ex) { .. }