我试图在asp.net中使用报表查看器并上传我的网站。但是,当加载包含报表查看器的页面时,它会显示以下错误:
无法加载文件或程序集'Microsoft.ReportViewer.WebForms,Version = 11.0.0.0,Culture = neutral,PublicKeyToken = 89845dcd8080cc91'或其依赖项之一。定位的程序集的清单定义与程序集引用不匹配。 (HRESULT异常:0x80131040)
这是我第一次部署ASP.NET网站,所以我不确定问题是什么。
这个链接给了我一个线索,我没有安装所需的更新(我有问题的版本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
)
我的解决方案是:
我希望这可以提供帮助。
我的DevExpress试用版已过期。尝试再次更新它。
更新ReportViewer应该有效。使用以下说明从Nuget Package Manager控制台安装更新的ReportViewer。
安装包Microsoft.ReportingServices.ReportViewerControl.WebForms
只需在aspx文件中添加以下程序集引用即可。
这里,15.0.0.0是我的VS中安装的ReportViewerControl.WebForms的版本号。请检查解决方案的参考以确认版本号。无需添加PublicTokens(如果存在多个安装,则可能再次造成麻烦)。
在包含服务器数据的服务器上运行报表查看器
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中将其“Local Copy”设置为True,这样在构建部署包时它将被复制到“Bin”文件夹。
C)发布解决方案
D)之后,在“File Zilla”软件的帮助下将所有文件和“Bin”文件夹上传到“Web Server”。
E)这将在服务器上安装DLL,因此,客户端不需要具有“Report Viewer.dll”。
这对我有用。
我已经安装了Microsoft.ReportViewer.2012.Runtime nuget package并且问题已经解决而无需安装ReportViewer.msi或sql功能包12
您需要引用Microsoft.ReportViewer.WebForms和Microsoft.ReportViewer.Common并将CopyLocal属性设置为true。这将导致dll被复制到我们的bin目录(两者都是必需的)。
我通过复制这两个问题解决了这个问题
C:\Program Files (x86)\Microsoft Visual Studio 12.0\ReportViewer
的Microsoft.ReportViewer.WebForms.dllC:\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>
就这样。对我来说没问题。
希望这可以帮助。
我遇到了同样的错误。我的Web应用程序指向报表查看器版本10.0,但是如果安装了11.0,它会将10.0 .dll中的重定向添加到11.0。当卸载11.0时,这会成为一个问题,因为这不会更正10.0 .dll中的重定向。在我的情况下修复只是卸载并重新安装10.0。
从版本10.0.0.0开始,我遇到此错误,即“Microsoft.ReportViewer.WebForms,Version = 10.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a”/>
到版本11.0.0.0,即
“Microsoft.ReportViewer.WebForms,Version = 11.0.0.0,Culture = neutral,PublicKeyToken = 89845dcd8080cc91”
我花了一段时间才知道不仅版本被更改,而且还有公共令牌密钥,如上所示。
我对不同的包有同样的错误。我的问题是依赖项目引用了不同的版本。我把它们改成了相同的版本,一切都很好。
将文件Microsoft.ReportViewer.WebForms.dll上载到Web应用程序的bin目录。
您可以在本地Web应用程序的bin目录中找到此dll文件。
我在旧的webforms应用程序中遇到此错误。事实证明,标记中有一条线导致了这个问题。我删除了它,错误消失了。
<%@ Register assembly="Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" namespace="Microsoft.Reporting.WebForms" tagprefix="rsweb" %>