我的生产站点上的报表查看器有一个奇怪的问题。我在同一台机器上部署了站点的舞台和演示版本。最近我一直在进行更新,并一直在部署到运行良好的阶段版本。今天我部署到Demo,突然报表查看器坏了,只在Demo上。
我得到的错误是:
CS0433: The type 'Microsoft.Reporting.WebForms.ReportDataSource' exists in both
'c:\Windows\assembly\GAC_MSIL\Microsoft.ReportViewer.WebForms\10.0.0.0__b03f5f7f11d50a3a\Microsoft.ReportViewer.WebForms.dll'
and 'c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\h2o-demo\d354e6e4\ac3ce3e\assembly\dl3\67b85cd6\0027fec0_ed32ca01\Microsoft.ReportViewer.WebForms.DLL'
在此更新中,该项目已从 Report Viewer 9 更新到 10。Web Config 中的所有引用以及我项目的“引用”中的所有引用都已更新。我注意到由于某种原因,放入“临时 ASP.NET 文件”中的版本实际上是版本 9。
再次回顾一下;该项目在我的本地机器上运行良好。它也适用于部署在与损坏的演示站点相同的服务器上的 Stage 站点。
有人对我可以做些什么来解决这个问题有任何想法吗?我似乎找不到任何具有对我有用的解决方案的资源。我尝试了编译 batch = false 并添加了从 9 到 10 的程序集 bindingredirect(尽管我想我可能做错了)。我真的很困惑为什么它会在一个站点上运行,而在另一个站点上却不行。
编辑 1:在环顾四周后,我再次尝试绑定重定向。我的配置文件现在看起来像这样:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="log4net" publicKeyToken="1b44e1d426115821" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.2.10.0" newVersion="1.2.10.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.ReportViewer.WebForms" publicKeyToken="b03f5f7f11d50a3a" />
<bindingRedirect oldVersion="9.0.0.0" newVersion="10.0.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.ReportViewer.Common" publicKeyToken="b03f5f7f11d50a3a" />
<bindingRedirect oldVersion="9.0.0.0" newVersion="10.0.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
“Log4Net”重定向已经存在,并且是舞台上唯一的东西。添加“WebForms”后,“Common”出现错误,因此我也添加了该错误。现在我收到此错误:
Could not load file or assembly 'log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821' or one of its dependencies. The system cannot find the file specified.