Pages

Wednesday 8 January 2014

Excel download Response.End() throwing ThreadAbortException " Thread was being aborted" issue Fixed.

 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()                           //       Thread was being aborted.
                        response.Flush();                  
                        HttpContext.Current.Response.Flush();
                        HttpContext.Current.Response.SuppressContent = true;
                        HttpContext.Current.ApplicationInstance.CompleteRequest();
                    }
                }
            }
            catch (ThreadAbortException ex)
            {
                string Err = ex.Message.ToString();
                EsHelper.EsADLogger("HOQCMgmt.aspx ibtnExcelAll_Click()", ex.Message.ToString());
                throw;              
            }
            catch (Exception ex)
            {
                string Err = ex.Message.ToString();
                EsHelper.EsADLogger("HOQCMgmt.aspx ibtnExcelAll_Click()", ex.Message.ToString());
            }
            finally
            {
                HttpContext.Current.Response.SuppressContent = true;
                HttpContext.Current.ApplicationInstance.CompleteRequest();
            }
        }

2 comments: