Rob*_*ert 5 vb.net intermittent crystal-reports
我们正在带有.NET Framework 3.5 SP1的Windows Server 2008上运行Crystal Reports。
我已经看到了导致一般错误“无法将请求提交进行后台处理”的多种原因。但是在其他论坛上,由于特定报告的格式问题,它们往往是持久性和可重复性,仅影响单个报告。
我们间歇性地在下面的堆栈跟踪中看到此错误。
这些报告以前都可以正常工作。服务器或代码似乎没有任何明显的变化,否则将导致此错误。后面的所有代码都是VB.NET
我们很难在测试环境中复制它,并且升级到最新版本的Crystal根本没有帮助。您可能能够解决此问题的任何帮助或建议,将不胜感激。
"The request could not be submitted for background processing."
at CrystalDecisions.ReportAppServer.Controllers.DatabaseControllerClass.ReplaceConnection(Object oldConnection, Object newConnection, Object parameterFields, Object crDBOptionUseDefault)
at CrystalDecisions.CrystalReports.Engine.Table.SetDataSource(Object val, Type type)
at CrystalDecisions.CrystalReports.Engine.ReportDocument.SetDataSourceInternal(Object val, Type type)
--- End of inner exception stack trace ---
at CrystalDecisions.ReportAppServer.ConvertDotNetToErom.ThrowDotNetException(Exception e)
at CrystalDecisions.CrystalReports.Engine.ReportDocument.SetDataSourceInternal(Object val, Type type)
at CrystalDecisions.CrystalReports.Engine.ReportDocument.SetDataSource(DataSet dataSet)
at "USER CODE"
Run Code Online (Sandbox Code Playgroud)
很多天后,我终于发现了问题的根源,以防您在报告中包含jpg 图像。
问题是 VS2008 或更高版本的 CR无法处理 CMYK 模式下的 jpg 文件。CR 只能处理 RGB 模式下的 jpg 文件。
有趣的是,较低版本的 CR(VS2003 附带的那个)可以处理任何类型的 jpg 文件。谢谢,水晶。
隔离报告生成代码。
我们的最终解决方案是采用生成报告的代码并将其移至自己的独立服务中。然后,我们原来的服务使用相关参数和 Crystal RPT 文件调用我们的新 Crystal 服务。这显然是一个成本高昂的解决方案,因为它涉及修改所有报告生成代码以调用 Crystal 服务。Crystal 服务未显示该错误。除此之外,代码没有改变,所以我们只能推测错误的原因是水晶报表引擎和我们的应用程序中的环境之间的一些交互。