为什么Crystal Reports for VS 2008在向打印机发送报告时抛出“加载报告失败.COMException:报告应用程序服务器失败”?

时间:2009-09-25 18:33:48

标签: visual-studio-2008 crystal-reports windows-services 64-bit windows-server-2003

我有一个.NET Windows服务,上面有一个水晶报表查看器。当它轮询数据库并查找实时订单时,它会向网络上的打印机发送报告。这是Windows2003服务器64位。我在我的Visual Studio安装中找到的64位服务器上安装了msi:

C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages\CrystalReports10_5\CRRedist2008_x64.msi

我得到的错误太多,有时每天3-4次。我不得不承认这是一个最初用VB6和cr8.5编写的项目。我终于升级到了vs2003,最终升级到64位.net 2.0,并且整个地方都失败了。每次升级都会变得更糟。

  1. 我应该创建一个新的Windows服务而不是使用通过升级向导的项目到vs2008吗?

  2. 您认为我的1.1网络应用程序在同一服务器上运行的32位版本的水晶与msi存在冲突吗?是的,iis6暂时以32位模式运行...这是一个旧报告,但我确实将其升级到10.5。帮助!

  3. 这是堆栈转储:

      

    默认异常:CrystalDecisions.Shared.CrystalReportsException:加载报告失败。 ---> System.Runtime.InteropServices.COMException(0x80004005):报表应用程序服务器失败      在CrystalDecisions.ReportAppServer.ClientDoc.ReportClientDocumentClass.Open(Object& DocumentPath,Int32 Options)      在CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.Open(Object& DocumentPath,Int32 Options)      在CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened()      ---内部异常堆栈跟踪结束---      在CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened()      在CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(String filename,OpenReportMethod openMethod,Int16 parentJob)      在CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(String filename)      在PickTicketServer.PickTicketServer.PrintPickTicket(Int64 INlngOrderID,Boolean INblnPickOrPack,Int64 INlngCompanyID)

2 个答案:

答案 0 :(得分:0)

您运行的用户是否具有打印机的访问权限?这可能会导致此错误。

答案 1 :(得分:0)

您没有清除内存中的对象,它会崩溃,尝试在使用后丢弃对象。