无法加载文件或程序集'Microsoft.ReportViewer.WebForms'

时间:2013-05-11 04:40:12

标签: asp.net reporting-services reportviewer

我正在尝试在asp.net中使用报表查看器并上传了我的网站。但是,当我加载包含报表查看器的页面时,它会显示以下错误:

  

无法加载文件或程序集“Microsoft.ReportViewer.WebForms,Version = 11.0.0.0,Culture = neutral,PublicKeyToken = 89845dcd8080cc91”或其中一个依赖项。定位的程序集的清单定义与程序集引用不匹配。 (HRESULT异常:0x80131040)

这是我第一次部署ASP.NET网站,所以我不确定是什么问题。

13 个答案:

答案 0 :(得分:59)

这个链接给了我一个线索,我没有安装所需的更新(我有问题的版本nr,v11.0.0.0)

ReportViewer 2012 Update 'Gotcha' to be aware of

我安装了更新SQLServer2008R2SP2

我下载了ReportViewer.msi,需要安装Microsoft® System CLR Types for Microsoft® SQL Server® 2012 (look halfway down the page for installer)

GAC现已推出WebForms v11.0.0.0(C:\Windows\assembly\Microsoft.ReportViewer.WebForms v11.0.0.0以及Microsoft.ReportViewer.Common v11.0.0.0

答案 1 :(得分:31)

我已经安装了Microsoft.ReportViewer.2012.Runtime nuget package并且问题已经解决而无需安装ReportViewer.msi或sql功能包12

enter image description here

答案 2 :(得分:22)

您需要引用Microsoft.ReportViewer.WebForms和Microsoft.ReportViewer.Common,并将CopyLocal属性设置为true。这将导致dll被复制到我们的bin目录(两者都是必需的)。

答案 3 :(得分:8)

我通过复制

解决了这个问题
    来自C:\Program Files (x86)\Microsoft Visual Studio 12.0\ReportViewer
  • Microsoft.ReportViewer.WebForms.dll
  • 来自C:\Program Files\Microsoft Office\Office15\ADDINS\PowerPivot Excel Add-in
  • Microsoft.reportviewer.common.dll

进入bin文件夹(网站)。

当然web.config必须:

    <httpHandlers>
        <add path="Reserved.ReportViewerWebControl.axd" verb="*" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" validate="false" />
    </httpHandlers>

    <assemblies>

        <add assembly="Microsoft.ReportViewer.WebForms, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91" />
        <add assembly="Microsoft.ReportViewer.Common, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91" />
    </assemblies>

    <buildProviders>
        <add extension=".rdlc" type="Microsoft.Reporting.RdlBuildProvider, Microsoft.ReportViewer.WebForms, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    </buildProviders>

    <system.webServer>
        <validation validateIntegratedModeConfiguration="false" />
        <handlers>
            <add name="ReportViewerWebControlHandler" preCondition="integratedMode" verb="*" path="Reserved.ReportViewerWebControl.axd" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
        </handlers>
    </system.webServer>

就是这样。 对我来说还可以。

希望这有帮助。

答案 4 :(得分:1)

我遇到了同样的错误。我的Web应用程序指向报表查看器版本10.0,但是如果安装了11.0,它会将10.0 .dll中的重定向添加到11.0。当卸载11.0时,这会成为一个问题,因为这不会更正10.0 .dll中的重定向。在我的情况下修复只是卸载并重新安装10.0。

答案 5 :(得分:1)

I had this error when going from version 10.0.0.0, i.e. "Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />

to version 11.0.0.0, i.e.

"Microsoft.ReportViewer.WebForms, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"

It took a while until I understood that not only the version was changed but also the public token key, as you can see above.

答案 6 :(得分:0)

将文件Microsoft.ReportViewer.WebForms.dll上传到您的Web应用程序的bin目录。

您可以在本地Web应用程序的bin目录中找到此dll文件。

答案 7 :(得分:0)

我在旧的webforms应用程序中遇到此错误。事实证明,标记中有一条线导致了这个问题。我删除了它,错误消失了。

<%@ Register assembly="Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" namespace="Microsoft.Reporting.WebForms" tagprefix="rsweb" %>

答案 8 :(得分:0)

我对其他包有同样的错误。我的问题是依赖项目引用了不同的版本。我将它们改为同一版本,一切都很好。

答案 9 :(得分:0)

我的解决方案是:

  1. 将dll Microsoft.ReportViewer.WebForms.dll复制到项目中的Bin文件夹中。
  2. 删除您的参考。
  3. 从bin文件夹添加新引用。
  4. 我希望这可以提供帮助。

答案 10 :(得分:0)

我的DevExpress试用版已过期。尝试重新更新它。

答案 11 :(得分:0)

更新ReportViewer应该可以。请按照以下说明从Nuget Package Manager控制台安装更新的ReportViewer。

  

安装包   Microsoft.ReportingServices.ReportViewerControl.WebForms

只需在aspx文件中添加以下程序集引用即可。

  

在这里, 15.0.0.0 是在我的VS中安装的ReportViewerControl.WebForms的版本号。请检查解决方案参考以确认版本号。无需添加PublicTokens (如果存在多个安装,则可能会再次造成麻烦)。

答案 12 :(得分:0)

为了使用服务器上的数据在服务器上运行Report Viewer

A)转到项目属性---->选择参考------>添加参考

1)导入(Microsoft.ReportViewer.Common.dll)----->(路径“ C:\ Program Files(x86)\ Microsoft Visual Studio 10.0 \ ReportViewer”)

2)导入(Microsoft.ReportViewer.ProcessingObjectModel.dll)----->(路径“ C:\ Windows \ Assembly \ GAC_MSIL \ Microsoft.ReportViewer.ProcessingObjectModel”)

3)导入(Microsoft.ReportViewer.WebForms.dll)----->(路径“ C:\ Program Files(x86)\ Microsoft Visual Studio 10.0 \ ReportViewer”)

B)在上述三个DLL中,将其“本地副本”设置为True,以便在构建部署包时将其复制到“ Bin”文件夹。

C)发布解决方案

D)之后,借助“ File Zilla”软件将所有文件连同“ Bin”文件夹上载到“ Web Server”。

E),这将在服务器上安装DLL,因此,客户端不需要具有“ Report Viewer.dll”。

这对我有用。