第一次使用 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");
}
沒有留言:
張貼留言