如何在调用 Crystal Reports ExportToHttpResponse 方法后运行清理代码?

Rae*_*ark 5 asp.net crystal-reports

我们在 ASP.Net 应用程序中遇到了一个问题,即在为用户生成报告后,Crystal Reports 引擎在服务器的 Temp 文件夹中留下垃圾 .tmp 文件。

所以我们试图弄清楚如何在 Report 对象上运行 .Close() 和 .Dispose() 方法,但我们发现在导出发生后代码永远不会运行。

MyReport.Report.ExportToHttpResponse(ExportFormatType.PortableDocFormat, 
        this.Response, true, "My_Report");

MyReport.Report.Close();
MyReport.Report.Dispose();
Run Code Online (Sandbox Code Playgroud)

设置在最后两行的断点永远不会被命中,我们还尝试将其他代码放在那里来测试处理。没有一个运行。(我也在其他具有类似代码的网站上看到过这个问题,但没有答案)

我假设此时 ExportToHttpResponse 方法正在向用户返回文件流 (PDF),结束处理,因此其余代码不会运行。如果是这种情况,我们如何让 CR 对临时文件执行清理,而 Close() 和 Dispose() 方法应该这样做?我们是否必须实施手动事后清理?

Dus*_*sty 4

我没有办法重现这个问题,所以我会指出您可以使用 using 语句,它允许您指定何时应该释放对象。

什么是 C# using 块以及为什么要使用它? http://msdn.microsoft.com/en-us/library/yh598w02(VS.80).aspx

没试过这个,但我想你也许可以做类似的事情

using(MyReport m = new MyReport())
{
   m.Report.ExportToHttpResponse(ExportFormatType.PortableDocFormat, 
        this.Response, true, "My_Report");
}
Run Code Online (Sandbox Code Playgroud)

当我输入它时,我不确定它是否会与您已经拥有的有很大不同,但是哦,好吧,这是值得尝试的事情。在我看来,这是有效的。:)

希望能帮助到你。