Thread was being aborted exception in crystal reports

前端 未结 2 1797
猫巷女王i
猫巷女王i 2021-01-13 08:55

We were getting the Thread was being aborted Exception while exporting a report into PDF.

The below code we were using for export a report into PDF.

         


        
相关标签:
2条回答
  • 2021-01-13 09:40

    SAP explains that:

    Cause

    The issue has been identified and logged under Problem Report ID ADAPT00765364. The error is likely caused because Response.End() is used inside the ExportToHttpResponse() method.
    It is a known issue that Reponse.End() causes the thread to abort. This is by design.
    See Microsoft KB312629 Article for more info.

    Workaround

    ....
     try
       {
       reportDocument.ExportToHttpResponse(format, Response, true, Page.Title);
       }
     catch (System.Threading.ThreadAbortException)
       {
       }
    ....
    

    Resolution

    You can write your own code to export a Crystal Report directly to the browser in a format such as PDF, Word, Excel, etc. You must make sure you use the appropriate content type.

    Sample code to export Crystal Report to web browser as PDF

    try
    {
     boReportDocument.Load(Server.MapPath(@"MyReport.rpt"));
     System.IO.Stream oStream = null;
     byte[] byteArray = null;
     oStream = boReportDocument.ExportToStream (ExportFormatType.PortableDocFormat);
     byteArray = new byte[oStream.Length];
     oStream.Read(byteArray, 0, Convert.ToInt32(oStream.Length - 1));
     Response.ClearContent();
     Response.ClearHeaders();
     Response.ContentType = "application/pdf";
     Response.BinaryWrite(byteArray);
     Response.Flush();
     Response.Close();
     boReportDocument.Close();
     boReportDocument.Dispose();
    
    }
    catch (Exception ex)
    {
     string s = ex.Message;
    }
    
    0 讨论(0)
  • 2021-01-13 09:45

    The error is thrown because a call to response.End() is made inside of ExportToHttpResponse. Remove your calls to Flush and Close the response and wrap your call to ExportToHttpResponse inside a try/catch block to catch and ignore the System.Threading.ThreadAbortException.

    0 讨论(0)
提交回复
热议问题