我创建了一个 .Net 应用程序以在应用程序服务器上运行,该应用程序服务器获取报告请求并打印出请求的报告。
C# 应用程序使用 Crystal Reports 加载报表并随后将其打印出来。
该应用程序在服务器上运行,该服务器通过特定用户帐户下的远程桌面连接(旧应用程序需要)连接到该服务器。当我从远程会话断开连接时,应用程序开始引发异常,例如:
消息:CrystalDecisions.Shared.CrystalReportsException:加载报告失败
当远程会话处于活动状态时,永远不会引发此类错误。运行该应用程序的服务器正在运行 Windows Server 2003,我创建连接的机器是 Windows XP。
我很欣赏这很奇怪,但是我看不到我创建的应用程序部署有任何问题。
有谁知道可能导致此问题的原因是什么?
编辑:我硬着头皮将应用程序创建为 Windows 服务,显然这不会花很长时间,我只是不相信它会解决问题。反正不行!!!
我还尝试删除异步调用打印函数的多线程代码。我这样做是为了简化应用程序并缩小它可能失败的原因。无论如何,这也没有改善情况!
编辑:我得到的两个错误是:
System.Runtime.InteropServices.COMException (0x80000201):指定的打印机无效。在 CrystalDecisions.ReportAppServer.Controllers.PrintOutputControllerClass.ModifyPrinterName(String newVal) 在 CrystalDecisions.CrystalReports.Engine.PrintOptions.set_PrinterName(String value) 在 Dsa.PrintServer.Service.Service.PrintCrystalReport(报告报告)
打印机没有失效,60秒后时间滴答即确认,报告打印成功。
和
无法提交请求以进行后台处理。在 CrystalDecisions.ReportAppServer.Controllers.ReportSourceClass.GetLastPageNumber(RequestContext pRequestContext) 在 CrystalDecisions.ReportSource.EromReportSourceBase.GetLastPageNumber(ReportPageRequestContext reqContext) --- 内部异常堆栈跟踪结束 --- 在 CrystalDecisions.ReportAppServer.ConvertDotNetToErom.ThrowDotNetException(Exception e)在 CrystalDecisions.ReportSource.EromReportSourceBase.GetLastPageNumber(ReportPageRequestContext reqContext) 在 CrystalDecisions.CrystalReports.Engine.FormatEngine.PrintToPrinter(Int32 nCopies, Boolean collated, Int32 startPageN, Int32 endPageN) 在 CrystalDecisions.CrystalReports.Engine.ReportDocument.PrintToPrinter(Int32 nCopies, Boolean整理,Int32 startPageN,
编辑:
我运行了 filemon 来检查是否有任何访问问题。发生错误时文件 mon 报告
请求:打开 | 路径:C:\windows\assembly\gac_msil\system\2.0.0.0__b77a5c561934e089\ws2_32.dll | 结果:未找到 | 其他:属性错误