Traté de convertir mi conjunto de datos en Excel y descargar ese Excel. Obtuve mi archivo de Excel requerido. Pero System.Threading.ThreadAbortException se generó en cada descarga de Excel. ¿Cómo resolver este problema? .. Por favor ayúdame ...
Llamo a este método en mi pantalla aspx También hay la misma excepción lanzada por este método.
Llamo a esa función pública void ExportDataSet (DataSet ds) en muchas pantallas aspx y también estoy manteniendo el método de registro de errores para las excepciones que se generan en tiempo de ejecución, esas excepciones se escriben en archivos .txt. Entonces, esa misma excepción se registra en todos los archivos txt de la pantalla aspx. Solo quiero evitar que esta excepción se arroje desde el archivo de clase declarado del método a aspx. Simplemente solo quiero manejar esta excepción en el archivo de clase de declaración de mi método.
Llamada al método de archivo ASPX: excel.ExportDataSet (dsExcel);
Definición del método:
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
vea stackoverflow.com/a/3917180/2864740 (y las otras respuestas); tenga en cuenta que la excepción es "de esperar", ya que es la forma en que se desenrolla la pila (así que no atrape esa excepción). Si aún desea capturar [otras] excepciones, use:.. catch (ThreadAbortException) { throw; /* propagate */ } catch (Exception ex) { .. }