在ASP.Net网站

时间:2015-08-19 15:09:32

标签: asp.net vb.net reportviewer rdlc

首先,只有当我将其发布到Web服务器(Server 2008 R2)时,才会在本地运行时发生错误。返回的错误消息(第一部分)是:

  

MICROSOFT.REPORTING.WEBFORMS.LOCALPROCESSINGEXCEPTION:在本地报告处理期间发生的错误。 ---> SYSTEM.NULLREFERENCEEXCEPTION:对象参考未设置为对象的实例。      一个   MICROSOFT.REPORTINGSERVICES.RENDERING.HPBPROCESSING.TABLIX.UPDATETOPITEMKT(PAGEITEM TOPITEM,ROWINFO ROWINFO,PAGEDETAILCELL CURRCELL)

呈现报告的代码段位于VB.Net ...

Dim report As LocalReport = New LocalReport()
report.DataSources.Clear()
report.ReportPath = "App_GlobalResources\MyReport.rdlc"
report.DataSources.Add(New ReportDataSource("MyDataSource", MyDataTable))
report.Refresh()
Dim byteReport As Byte() = New Byte() {}
'The next line is where it fails with the exception above.
byteReport = report.Render("pdf")  'Get bytes to use with memory stream

我们确实有其他报告可以使用相同的代码正常工作,但是此报告使用表中的行组将数据与标题分组......有效的那些不使用行组。

同样,这仅在发布到Web服务器时发生。我发现了一些似乎相似的链接(下面有一个),但是想知道是否有人经历过这个。 ReportViewer export to PDF Null reference

1 个答案:

答案 0 :(得分:1)

我能够找到一个对我有用的解决方案并解决了这个问题,所以希望它能帮助遇到这个问题的其他人。

当我们使用MS ReportViewer 2010创建我们的第一个rdlc时,我们正在开发VS2010。我们已经升级到VS2013和.Net 4.5,我们从未触及现有的rdlc,因为一切都继续工作。当我们创建新的rdlc时,我们再次针对MS ReportViewer 2010,但是当它们部署到Web服务器时,使用表控件和行组对表中的数据进行分组的新报告将会失败。

我做的是安装了MS ReportViewer 2012 Runtime(如果需要),以便我可以引用更新的dll。然后我也将它安装在Web服务器上。 注意:系统可能会提示您安装Microsoft® System CLR Types for Microsoft® SQL Server® 2012。您可以在安装说明底部附近找到x86 / x64下载。

一旦我将更新后的网站重新发布到更新的Web服务器,一切都正常运行。我注意到我使用2012年的格式与2010年相比略有不同,但解决这些差异所需的更改很少。