【发布时间】:2011-09-17 03:20:32
【问题描述】:
我们的 ASP.Net 应用程序出现问题,Crystal Reports 引擎在为用户生成报告后将垃圾 .tmp 文件留在服务器的 Temp 文件夹中。
所以我们试图弄清楚如何在 Report 对象上运行 .Close() 和 .Dispose() 方法,但我们发现在导出发生后代码永远不会运行。
MyReport.Report.ExportToHttpResponse(ExportFormatType.PortableDocFormat,
this.Response, true, "My_Report");
MyReport.Report.Close();
MyReport.Report.Dispose();
在最后两行设置的断点永远不会被击中,我们还尝试将其他代码放在那里来测试处理过程。没有一个运行。 (我也在其他网站上看到过类似代码的这个问题,但没有答案)
我假设 ExportToHttpResponse 方法此时正在向用户返回一个文件流 (PDF),结束处理,因此其余代码不会运行。如果是这种情况,我们如何让 CR 对临时文件执行清理,而 Close() 和 Dispose() 方法应该这样做?我们是否必须实施手动事后清理?
【问题讨论】:
-
希望您能得到答复。我们的一个供应商显然没有意识到这个问题,所以有一天当磁盘填满时,我们的网络服务器停止工作。我们现在只是运行一个计划任务来删除旧的临时文件。
-
是的,没错。由于磁盘空间已满,我们的托管服务器崩溃了几次。现在托管团队每年手动清理文件几次。计划任务是我们考虑过的后备。