8

我有一个 ASP.NET MVC 前端,其中列出了 SQL Azure Reporting Services 上的报告。用户选择要运行的报告,该报告将加载到另一个浏览器窗口中。问题是,当报告在某些浏览器(例如 Win7 上的 IE10)上运行时,显示的只是以下消息:

Method not found: 'Boolean Microsoft.ReportingServices.Common.DateTimeUtil.TryParseDateTime(System.String, System.IFormatProvider, System.DateTimeOffset ByRef, Boolean ByRef)'.

在 Win7 上使用 Chrome 报告“半途而废” - 我得到带有日期时间框和另一个下拉列表的顶部栏,当我单击“运行”按钮时,我得到报告导航栏,但没有报告正文。我没有收到上面的消息。

该网站已发布到 Azure 网站。我引用了以下 DLL 并将 CopyLocal 设置为 true:

Microsoft.ReportViewer.Common
Microsoft.ReportViewer.WebForms
Microsoft.ReportViewer.DataVisualization
Microsoft.ReportViewer.ProcessingObjectModel

已发布的报告在我安装了 ReportViewer 2012 可再发行组件(控件的版本 11)的开发机器上运行良好。

所以,问题:

我发布的网站还缺少哪些其他可再分发的 dll?什么是 Microsoft.ReportingServices.Common?'ByRef' 似乎暗示这是 VB - 这是客户端脚本组件吗?我需要在客户端机器上安装什么东西才能查看报告吗?

4

7 回答 7

7

同样的问题发生在部署后在 IE 和 Firefox 上未发现方法错误,而在本地运行时一切正常。

 Method not found: 'Boolean Microsoft.ReportingServices.Common.DateTimeUtil.TryParseDateTime(System.String, System.IFormatProvider, System.DateTimeOffset ByRef, Boolean ByRef)'.

发生的事情是,在我们的本地 bin 文件中,Microsoft.ReportViewer dll 的版本比部署服务器更新。当部署服务器添加 dll 时,它从 GAC 中选择了与本地使用不同的版本。版本 11.0.2 而不是 11.0.33 导致未匹配。在本地计算机上将 dll 更新为相同版本后,它解决了该问题。有可能在您重新部署后使用了正确的 dll,从而解决了您的问题。

要验证 bin 文件夹和部署文件夹中的 dll 版本,您可以在导航到包含 dll 的文件夹后使用简单的 power shell 脚本。

dir *.dll | %{ $_.VersionInfo }
于 2014-01-30T21:31:58.913 回答
4

crackhaus 的回答为我指明了正确的方向。

这是我遵循的完整步骤序列:

  1. 使用以下 PowerShell 命令检查 bin 文件夹中程序集的版本号:

    dir *.dll | %{ $_.VersionInfo }
    
  2. 发现其中一个 ReportViewer 程序集的版本号与其他两个不同。

  3. 我在本地 GAC 中检查了该 DLL 的版本号,发现 GAC DLL 与我的 bin 文件夹中的其他两个 DLL 的版本匹配。

    我使用此处描述的选项 2来访问 GAC(基本上:PowerShell 到 c:\WINDOWS\assembly\GAC_MSIL\<Assembly Name>\<Assembly Major Version>)和上面的命令来检查版本号。

  4. 使用 PowerShell(copy-item命令),我提取了 DLL,并将其放入站点的 BIN 文件夹中。

于 2014-11-14T17:15:00.790 回答
1

转到 Nuget 并安装,从那里获得 Micorsoft.ReportViewer runtime 2012 和 ReportViewer.Common 10.0

于 2015-05-01T10:29:48.993 回答
0

这已经解决了我的问题,虽然我不得不承认我不知道为什么......

只需将 SizeToReportContent="true" 属性添加到 aspx 页面中的标记,例如:

<rsweb:ReportViewer ID="ReportViewer1" runat="server" SizeToReportContent="true" Font-Names="Verdana" Font-Size="8pt" Height="100%" ProcessingMode="Remote" WaitMessageFont-Names="Verdana" WaitMessageFont-Size="14pt" Width="100%">
    <ServerReport />
</rsweb:ReportViewer>

神奇的是,这一切似乎都在起作用。

于 2013-11-11T10:17:55.150 回答
0

我们有同样的问题。我想补充一点,您需要将所有 4 个 dll 复制到服务器:

Microsoft.ReportViewer.Common.dll
Microsoft.ReportViewer.WebForms.dll
Microsoft.ReportViewer.DataVisualization.dll
Microsoft.ReportViewer.ProcessingObjectModel.dll
于 2014-02-09T09:46:34.293 回答
0

我决定根据MSDN 文章将Microsoft System CLR Types for Microsoft SQL Server 2012Microsoft Report Viewer 2012 Runtime安装到服务器。之后,我从站点bin目录中删除了错误的程序集。

于 2014-12-15T15:05:13.323 回答
0

我们有同样的问题。我们使用了可再发行组件中的 dll:http: //www.microsoft.com/en-us/download/confirmation.aspx?id= 35747

于 2014-02-25T17:41:19.487 回答