第一次使用 Crystal Report ,但在壓力測試時發生了問題。
在每經一段時間後,Web Server 就再也無法吃報表的需求了。
錯誤原因是:載入報表失敗
查到一個 resource http://blog.csdn.net/daisylh/archive/2006/12/12/1439312.aspx ,說明 ReportDocument 記得要 Close(), 所以我就改成如下的程式
ReportDocument customerReport = new ReportDocument(); customerReport.Load(reportFilePath); customerReport.SetDataSource(rs); ExportOptions exportOpts = new ExportOptions(); PdfRtfWordFormatOptions pdfOpts = ExportOptions.CreatePdfRtfWordFormatOptions(); exportOpts.ExportFormatType = ExportFormatType.PortableDocFormat; exportOpts.ExportFormatOptions = pdfOpts; response.Clear(); response.Buffer = true; response.ContentType = "application/pdf"; customerReport.ExportToHttpResponse(ExportFormatType.PortableDocFormat, response, false, "aaa.pdf"); customerReport.Close(); customerReport.Dispose();可惜,沒有用。我發現 ExportToHttpResponse 執行完後,網頁就結束了。下面兩行的 Close() 與 Dispose() 是不會執行的。 改成如下的 using block,就可以了,
using (ReportDocument customerReport = new ReportDocument()) { customerReport.Load(reportFilePath); customerReport.SetDataSource(rs); ExportOptions exportOpts = new ExportOptions(); PdfRtfWordFormatOptions pdfOpts = ExportOptions.CreatePdfRtfWordFormatOptions(); exportOpts.ExportFormatType = ExportFormatType.PortableDocFormat; exportOpts.ExportFormatOptions = pdfOpts; response.Clear(); response.Buffer = true; response.ContentType = "application/pdf"; customerReport.ExportToHttpResponse(ExportFormatType.PortableDocFormat, response, false, "aaa.pdf"); }
沒有留言:
張貼留言