CrystalDecisions.CrystalReports.Engine.LoadSaveReportException:加载报告失败 - VB.NET 2003

时间:2013-04-05 07:23:37

标签: vb.net crystal-reports

有人知道为什么存在以下错误吗?

CrystalDecisions.CrystalReports.Engine.LoadSaveReportException: Load report failed

3 个答案:

答案 0 :(得分:2)

来自您对windows \ Temp的评论,这是由应用程序池的身份无法访问c:\ windows \ Temp(以及可能访问报告文件夹)引起的。

您可以通过提供具有必要权限的应用程序池凭据或向"网络用户"提供读写权限来解决此问题。到c:\ windows \ temp文件夹(再次,可能到报告文件夹)。

需要此文件夹的原因是crystal运行时在运行时创建报表的动态副本并将其放在%temp%文件夹中。它是Web浏览器中显示的临时文件夹副本(GUID附加到原始文件名)。这是设计使用,是确保实时报告安全的有用功能。

在此之后,您必须在加载每个报告后进行适当的清理,因为他们只是留在那里并填写临时文件夹!

类似的东西:

CrystalReportViewer1.Dispose(); // if using the viewer
CrystalReportViewer1 = null;
report.Close(); // I can't remember if this is part of the reportDocument class
report.Dispose();
report = null;
GC.Collect(); // crazy but true. Monitor the temp folder to see the effect

答案 1 :(得分:0)

Reckface的答案很明确,但要加点内容。

我设法使用它来使其工作:

protected void Page_Unload(object sender, EventArgs e)
{
    if (reportDocument != null)
    {
        reportDocument.Close();
        reportDocument.Dispose();
        crystalReportViewer1.Dispose();
    }
}

这样做可能会导致工具栏上的按钮出现问题,由于文件已被放置,它们不再能够找到文件路径。在这种情况下,文档需要在回发期间再次加载路径:source

答案 2 :(得分:-4)

你有没有打扰过谷歌吗?这是一个常见的例外;关于它的数百个帖子散布在intertubes周围。

Crystal .NET运行时具有着名的神秘错误消息。这个只是意味着无法加载.rpt文件(或嵌入式报表)。有几种可能的根本原因:错误的文件名或路径,安全违规,您没有正确处理旧报告,而且Windows / temp正在加速等等。

做一些研究。如果您仍然卡住了,请回过头来详细说明问题(您的报告是否正常工作,这是一个网络应用程序吗?您使用的是什么代码,等等。)

相关问题