我刚刚将一个站点从Windows 2003,IIS6 SQL 2005服务器迁移到一个新的Windows 2008,IIS7和SQL 2008服务器。
我遇到了报告查看器的问题。 我安装了Report Viewer Re-distributable(我试过2005,2005sp,2008和2008sp) 我在IIS中映射了一个处理程序
Reserved.ReportViewerWebControl.axd
输入
Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, 版本= 8.0.0.0,文化=中立, 公钥= b03f5f7f11d50a3a
但是每当我在网站上运行报告时,都会收到以下错误消息:
无法从程序集“Microsoft.ReportViewer.WebForms,Version = 9.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a”加载“Microsoft.Reporting.Microsoft.Reporting.WebForms.HttpHandler”类型。 描述:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪,以获取有关错误及其在代码中的起源位置的更多信息。
异常详细信息:System.TypeLoadException:无法从程序集“Microsoft.ReportViewer.WebForms,Version = 9.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a”加载类型“Microsoft.Reporting.Microsoft.Reporting.WebForms.HttpHandler”
我很难过。有什么想法吗?
答案 0 :(得分:1)
我认为您需要映射到版本9.0.0.0而不是8.0.0.0
答案 1 :(得分:1)
您需要确保此设置应该在您的实时服务器web.config
中<compilation debug="true">
<assemblies>
</assemblies>
<buildProviders>
<add extension=".rdlc" type="Microsoft.Reporting.RdlBuildProvider, Microsoft.ReportViewer.Common, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
</buildProviders>
<httpHandlers>
<add path="Reserved.ReportViewerWebControl.axd" verb="*" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" validate="false"/>
</httpHandlers>
答案 2 :(得分:1)
如果您在IIS 7下运行,则值得检查处理程序是否也有权执行。
设置完后我可以看到处理程序只是抛出500异常,仔细检查似乎只是将处理程序添加到列表是不够的。您还必须编辑其权限,因为默认情况下不允许执行该权限。勾选框让它执行,并立即解决我的问题。
答案 3 :(得分:1)
如果此处的任何其他建议不起作用,也可能值得尝试 -
“过渡到IIS 7存在许多问题。 需要大量的调试。
第一个问题已解决:IIS 7应用程序的目录权限 池标识(默认为网络服务)需要添加 IIS应用程序池可以访问物理路径 网站目录。
第二个问题已解决:需要在ASP.Net中添加一行 应用程序web.config文件。之后的孩子
补充:
第三个问题已解决安装时的默认应用程序池有.Net Framework 2.0默认为。这很好。默认应用程序池设置 管理管道模式需要从“集成”更改 (默认)为“经典”,这是保持我的应用程序运行的快速解决方案 就像在IIS 6上一样。“
将托管管道模式更改为“经典”为我修复了它。
答案 4 :(得分:0)
现在看来这个问题已经解决了一段时间,但对于任何搜索的人来说都是:
请注意错误中引用的程序集:
Microsoft.Reporting.Microsoft.Reporting.WebForms.HttpHandler
它应该只是Microsoft.Reporting.WebForms.HttpHandler
- 我们在web.config中的结果是多么可疑,但可能与在IIS中手动创建处理程序并让它们有关IIS将处理程序密钥写入应用程序的web.config(现在我无法重现它。)
对于迁移到IIS7的任何人,请记住,处理程序映射现在位于<system.webServer> <handlers>
而不是<system.web> <httpHandlers>
,就像在早期版本中一样。 IIS7将忽略旧的httpHandlers
部分,但您可能会检查那里的设置是否习惯,并且对您的设置没有生效感到沮丧。
答案 5 :(得分:0)
只需在项目的Bin文件夹中包含CommanClassLibrary.dll,并确保在aspx页面和配置文件中,您的ReportViewer Web控件版本应该相同