Reportviewer,一些报告打印,而另一些则不会
Posted
技术标签:
【中文标题】Reportviewer,一些报告打印,而另一些则不会【英文标题】:Reportviewer, Some reports print and others won't 【发布时间】:2021-12-06 16:58:51 【问题描述】:我有一个 c# winforms 程序,它使用 reportviewer 从数据库中打印报告。我已经在几台机器上安装了它,它运行得很好。我有一个新安装,其中一些报告呈现但其他报告不会呈现。那些不会呈现的在报告的标题中有一个图像。我得到的错误如下。
我尝试过重新安装、重新启动,我什至检查了 .Net 4.8 是否已加载。有什么建议吗?
我正在开发 VS 2019 和 .Net v4.8。
**************异常文本**************
Microsoft.Reporting.WinForms.LocalProcessingException: An error occurred during local report processing. ---> Microsoft.Reporting.DefinitionInvalidException: The definition of the report '' is invalid. ---> Microsoft.ReportingServices.ReportProcessing.ReportPublishingException: Error while loading code module: ‘System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a’. Details: Could not load file or assembly 'System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.
at Microsoft.ReportingServices.ReportPublishing.ReportPublishing.InternalCreateIntermediateFormat(Stream definitionStream, String& description, String& language, ParameterInfoCollection& parameters, DataSourceInfoCollection& dataSources, DataSetInfoCollection& sharedDataSetReferences, UserLocationFlags& userReferenceLocation, ArrayList& dataSetsName, Boolean& hasExternalImages, Boolean& hasHyperlinks, Byte[]& dataSetsHash)
at Microsoft.ReportingServices.ReportPublishing.ReportPublishing.CreateIntermediateFormat(Byte[] definition, String& description, String& language, ParameterInfoCollection& parameters, DataSourceInfoCollection& dataSources, DataSetInfoCollection& sharedDataSetReferences, UserLocationFlags& userReferenceLocation, ArrayList& dataSetsName, Boolean& hasExternalImages, Boolean& hasHyperlinks, Byte[]& dataSetsHash)
at Microsoft.ReportingServices.ReportProcessing.ReportProcessing.CompileOdpReport(PublishingContext reportPublishingContext, PublishingErrorContext errorContext, String& reportDescription, String& reportLanguage, ParameterInfoCollection& parameters, DataSourceInfoCollection& dataSources, DataSetInfoCollection& sharedDataSetReferences, UserLocationFlags& userReferenceLocation, ArrayList& dataSetsName, Boolean& hasExternalImages, Boolean& hasHyperlinks, Byte[]& dataSetsHash)
at Microsoft.ReportingServices.ReportProcessing.ReportProcessing.CreateIntermediateFormat(PublishingContext reportPublishingContext)
at Microsoft.Reporting.ReportCompiler.CompileReport(ICatalogItemContext context, Byte[] reportDefinition, Boolean generateExpressionHostWithRefusedPermissions, ControlSnapshot& snapshot)
--- End of inner exception stack trace ---
at Microsoft.Reporting.ReportCompiler.CompileReport(ICatalogItemContext context, Byte[] reportDefinition, Boolean generateExpressionHostWithRefusedPermissions, ControlSnapshot& snapshot)
at Microsoft.Reporting.LocalService.GetCompiledReport(PreviewItemContext itemContext, Boolean rebuild, ControlSnapshot& snapshot)
at Microsoft.Reporting.LocalService.CompileReport()
at Microsoft.Reporting.LocalService.Microsoft.Reporting.ILocalProcessingHost.CompileReport()
at Microsoft.Reporting.WinForms.LocalReport.EnsureExecutionSession()
--- End of inner exception stack trace ---
at Microsoft.Reporting.WinForms.LocalReport.EnsureExecutionSession()
at Microsoft.Reporting.WinForms.LocalReport.SetParameters(IEnumerable`1 parameters)
at AT_Scanner_IV.Badges.frmPrintBadges.PrintingDoctorBadges()
at AT_Scanner_IV.Badges.frmPrintBadges.btnPrintBadges_Click(Object sender, EventArgs e)
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
************** Loaded Assemblies **************
mscorlib
Assembly Version: 4.0.0.0
Win32 Version: 4.8.4420.0 built by: NET48REL1LAST_C
CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
----------------------------------------
AT Scanner IV
Assembly Version: 1.0.9.0
Win32 Version: 1.0.9.0
CodeBase: file:///C:/Program%20Files%20(x86)/Cybertec%20Services%20LLC/AT%20Scanner%20IV/AT%20Scanner%20IV.exe
----------------------------------------
CybertecClasses
Assembly Version: 1.0.16.0
Win32 Version: 1.0.16
CodeBase: file:///C:/Program%20Files%20(x86)/Cybertec%20Services%20LLC/AT%20Scanner%20IV/CybertecClasses.DLL
----------------------------------------
System.Windows.Forms
Assembly Version: 4.0.0.0
Win32 Version: 4.8.4400.0 built by: NET48REL1LAST_C
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System
Assembly Version: 4.0.0.0
Win32 Version: 4.8.4360.0 built by: NET48REL1LAST_C
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Drawing
Assembly Version: 4.0.0.0
Win32 Version: 4.8.4390.0 built by: NET48REL1LAST_C
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System.Configuration
Assembly Version: 4.0.0.0
Win32 Version: 4.8.4190.0 built by: NET48REL1LAST_B
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Core
Assembly Version: 4.0.0.0
Win32 Version: 4.8.4390.0 built by: NET48REL1LAST_C
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------
System.Xml
Assembly Version: 4.0.0.0
Win32 Version: 4.8.4084.0 built by: NET48REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
Microsoft.VisualBasic
Assembly Version: 10.0.0.0
Win32 Version: 14.8.4084.0 built by: NET48REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/Microsoft.VisualBasic/v4.0_10.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll
----------------------------------------
System.Data
Assembly Version: 4.0.0.0
Win32 Version: 4.8.4270.0 built by: NET48REL1LAST_C
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_32/System.Data/v4.0_4.0.0.0__b77a5c561934e089/System.Data.dll
----------------------------------------
System.Web
Assembly Version: 4.0.0.0
Win32 Version: 4.8.4330.0 built by: NET48REL1LAST_B
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_32/System.Web/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Web.dll
----------------------------------------
System.Transactions
Assembly Version: 4.0.0.0
Win32 Version: 4.8.4084.0 built by: NET48REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_32/System.Transactions/v4.0_4.0.0.0__b77a5c561934e089/System.Transactions.dll
----------------------------------------
System.EnterpriseServices
Assembly Version: 4.0.0.0
Win32 Version: 4.8.4084.0 built by: NET48REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_32/System.EnterpriseServices/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.EnterpriseServices.dll
----------------------------------------
Accessibility
Assembly Version: 4.0.0.0
Win32 Version: 4.8.4084.0 built by: NET48REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/Accessibility/v4.0_4.0.0.0__b03f5f7f11d50a3a/Accessibility.dll
----------------------------------------
System.Numerics
Assembly Version: 4.0.0.0
Win32 Version: 4.8.4084.0 built by: NET48REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Numerics/v4.0_4.0.0.0__b77a5c561934e089/System.Numerics.dll
----------------------------------------
Microsoft.ReportViewer.WinForms
Assembly Version: 15.0.0.0
Win32 Version: 15.0.1484.0
CodeBase: file:///C:/Program%20Files%20(x86)/Cybertec%20Services%20LLC/AT%20Scanner%20IV/Microsoft.ReportViewer.WinForms.DLL
----------------------------------------
Microsoft.ReportViewer.Common
Assembly Version: 15.0.0.0
Win32 Version: 15.0.1484.0
CodeBase: file:///C:/Program%20Files%20(x86)/Cybertec%20Services%20LLC/AT%20Scanner%20IV/Microsoft.ReportViewer.Common.DLL
----------------------------------------
System.Data.DataSetExtensions
Assembly Version: 4.0.0.0
Win32 Version: 4.8.4084.0 built by: NET48REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Data.DataSetExtensions/v4.0_4.0.0.0__b77a5c561934e089/System.Data.DataSetExtensions.dll
----------------------------------------
Microsoft.SqlServer.Types
Assembly Version: 14.0.0.0
Win32 Version: 2017.0140.1016.290 ((BI_Tools_SE).180927-1606)
CodeBase: file:///C:/Program%20Files%20(x86)/Cybertec%20Services%20LLC/AT%20Scanner%20IV/Microsoft.SqlServer.Types.DLL
----------------------------------------
Microsoft.ReportViewer.ProcessingObjectModel
Assembly Version: 15.0.0.0
Win32 Version: 15.0.1484.0
CodeBase: file:///C:/Program%20Files%20(x86)/Cybertec%20Services%20LLC/AT%20Scanner%20IV/Microsoft.ReportViewer.ProcessingObjectModel.DLL
----------------------------------------
【问题讨论】:
为什么在 v4 中加载了System.Drawing
,但引用了 v2?而且您的 ReportViewer 似乎不是来自 GAC,而是来自某些自定义软件?在我看来,您实际上缺少一些旧版本的 .NET Framework,或者您在表单的 .resx 文件中有一些错误的引用。
【参考方案1】:
我明白了。报告 rdlc 文件来自项目在 VS2010 中的时间,并且参考在 RDLC 中。该报告标题上有一张图片,但已被删除。但是该图像留在了报告的资源中。我使用 VS 从图像部分的报告数据中删除图像。但这并没有删除对违规程序集的引用。我使用 Notepad++ 打开 RDLC 文件并手动删除带有引用的 XML。如果您使用 reportviewer,您应该自己查看 RDLC 文件并查看其中的内容!
我发布这个是为了关闭线程,以防将来有人遇到这个问题。感谢 Nyuno 的推动!
【讨论】:
以上是关于Reportviewer,一些报告打印,而另一些则不会的主要内容,如果未能解决你的问题,请参考以下文章
C# + asp.Net + 自定义 Sybase SessionState 提供程序 + ReportViewer = 一些报告崩溃
VB.NET - 打印 RDLC 报告而不显示 ReportViewer 控件