0

我有一台 PC,操作系统已安装在 E: 上,但它没有 C: 驱动器。为此,我安装了运行良好的 .Net 4.0 WPF 应用程序。

但是,当我尝试访问水晶报告时,它会给出以下异常。该用户能够从 Windows 资源管理器中的网络位置访问报告,所以我认为要求 Crystal 将其复制到本地的行为会导致问题?

因此,任何人都可以建议在哪里创建本地副本和/或我如何控制它。

谢谢

打开报告的代码:

oReportDocument.Load(oSystemData.ReportPath + StandardReport.RPTFile, CrystalDecisions.[Shared].OpenReportMethod.OpenReportByTempCopy) 

调用堆栈的提取:

CrystalDecisions.CrystalReports.Engine.LoadSaveReportException: Invalid report file path.

在 CrystalDecisions.CrystalReports.Engine.EngineExceptionUtils.DoThrowException(字符串消息,EngineExceptionErrorID id)在 CrystalDecisions.CrystalReports.Engine.ExceptionThrower.ThrowEngineException(字符串消息 ID,EngineExceptionErrorID id)在 CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(字符串文件名,OpenReportMethod openMethod , Int16 parentJob) 在 CrystalDecisions.CrystalReports.Engine.ReportDocument.EnsureLoadReport() 在 CrystalDecisions.CrystalReports.Engine.ReportDocument.get_Subreports()

4

1 回答 1

1

当您加载报告时,它会生成报告的本地临时副本。找出该系统上的临时环境变量是什么。如果是 e:\temp 那么我怀疑您没有将文件写入该文件夹所需的权限。

也就是说,因为听起来您正在构建一个 Windows WPF 应用程序,所以它可能是您所建议的,实际上是在尝试一个无效的目录,如“c:\anything”。

要确切知道出了什么问题,我建议运行进程监视器,您可以在此处下载:http ://technet.microsoft.com/en-us/sysinternals/bb896645

它易于使用,唯一令人讨厌的是它在您的系统上观察到的大量事物。要解决这个问题,请右键单击“混乱”条目(在捕获窗口中)并选择将它们过滤掉。它允许过滤器位于进程(即 myWPFapp.exe)或活动类型上,在这种情况下,您想要监视文件系统(显然)。

一旦你让它捕获事件,并且你已经将它过滤掉,所以它不会迅速填满窗口,只需运行你的应用程序。您将看到对硬盘驱动器及其尝试使用的文件夹的任何失败访问。

祝你好运。

于 2012-05-05T16:37:23.547 回答