The Report Viewer Web Control HTTP Handler has not been registered in the application's
web.config file. Add <add verb="*" path="Reserved.ReportViewerWebControl.axd" type =
"Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=9.0.0.0,
Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> to the system.web/httpHandlers section of the web.config file
此错误即将发生。我已经在http处理程序中提到了这一行但仍然出现此错误
<add path="Reserved.ReportViewerWebControl.axd" verb="*" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=8.0.0.0, Culture=neutral, PublicKeyToken=0000000000000000" validate="false" />
我的html页面标记如下
<%@ Register Assembly="Microsoft.ReportViewer.WebForms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
Namespace="Microsoft.Reporting.WebForms" TagPrefix="rsweb" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<asp:Button ID="btnsubmit" runat="server" OnClick="GenerateReportButton_Click" />
<rsweb:ReportViewer ID="ReportViewer1" runat="server">
</rsweb:ReportViewer>
</asp:Content>
Web配置程序集部分如下:
<assemblies>
<add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="Microsoft.ReportViewer.WebForms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="Microsoft.ReportViewer.Common, Version=9.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
</assemblies>
答案 0 :(得分:11)
我遇到了同样的问题。发生的事情是我将Report loading例程放在Page_Load上,并没有将它包装在if (!IsPostBack)
中。 ReportViewer对页面进行POST,这就是触发Page_Load并重新加载报告,不知何故弄乱了它。将所有内容放入if (!IsPostBack)
后,它就像一个魅力。
答案 1 :(得分:9)
您是否可以检查web.config
是否注册了ReportViewer
的处理程序。它应该是这样的
<强>处理程序强>
<handlers>
<add name="ReportViewerWebControlHandler" preCondition="integratedMode" verb="*" path="Reserved.ReportViewerWebControl.axd" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</handlers>
同时检查web.config
ReportViewer
中的装配部分,如下所示。
<assemblies>
<add assembly="Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
<add assembly="Microsoft.ReportViewer.Common, Version=10.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
答案 2 :(得分:7)
当我将应用程序池从Integrated更改为Classic时,问题也随之消失。
答案 3 :(得分:1)
在我更改了我的查询调用的存储过程的参数而没有刷新SSRS设计器中的数据集之后,这个问题出现了,所以你可以试试这个。
答案 4 :(得分:1)
过去两天我遇到了同样的问题。 这不是原始问题的答案 - 只是针对那些有同样问题的人的其他信息。
我遇到问题的应用程序已于2005年开发,目前仍处于开发阶段。
所以它已经从VS 2005移植到VS 2008到VS 2010,最近移植到VS 2013.看来这是错误发生的时候。 介于.NET框架之间的某个地方已从.NET 3.5切换到.NET 4。
我认为(我没有验证)使用.NET 4,报表查看器* .dll作为系统库。无论如何,这向我展示了我的GAC:
我自己手动安装了第一个版本8(使用Report Viewer 2005可再发行二进制文件)。
所以在VS 2013中,Resharper考虑使用版本11并自动更改web.config中的那些行
<httpHandlers>
<!-- this is the correct one (if using Report Viewer 2005 / 8.0.0.0 -->
<add path="Reserved.ReportViewerWebControl.axd" verb="*" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" validate="false"/>
</httpHandlers>
<httpHandlers>
<!-- this is the wrong one inserted during the update (or maybe Resharper) -->
<add path="Reserved.ReportViewerWebControl.axd" verb="*" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>
</httpHandlers>
这么长的故事简短:似乎 - 至少在我的情况下 - 这个错误指向与Visual Studio使用的库和使用运行时的库的版本冲突。微软给出的错误有点误导。
答案 5 :(得分:1)
对我来说同样的问题。这个问题对我来说也消失了 1)当我将应用程序池从“集成”更改为“经典”时。 2)像这样更改HTTP处理程序
<httpHandlers>
<add verb="*" path="Reserved.ReportViewerWebControl.axd" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" validate="false" />
</httpHandlers>
答案 6 :(得分:0)
我没有更改应用程序池中的任何内容,只是添加了这一行:
<Add name = "Reserved-ReportViewerWebControl-axd" path = "Reserved.ReportViewerWebControl.axd" verb = "*" type = "Microsoft.Reporting.WebForms.HttpHandler" resourceType = "Unspecified" />
答案 7 :(得分:0)
当我们升级到SSRS 2016时,我们从报表查看器Web控件获得了完全相同的错误。但我们也无法访问SSRS Web门户 - 我们收到503错误导致我们: https://support.microsoft.com/en-gb/help/3171040/-http-503-service-unavailable-error-when-you-open-the-ssrs-web-portal-after-you-upgrade-to-ssrs-2016
安装SQL Server 2016 Service Pack 1后,一切正常。
答案 8 :(得分:0)
如果您正在使用WCF服务从数据库中检索数据,即使您已将HTTP处理程序添加到web.config文件,也可能会遇到此问题。
在这种情况下,您还必须将服务端点,行为和绑定添加到web.config以使其正常工作。
答案 9 :(得分:0)
就我而言,以下一行解决了我的问题:
<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=14.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
</handlers>
</system.webServer>
答案 10 :(得分:0)
对于IIS 7或更高版本
<system.webServer>
<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>
答案 11 :(得分:0)
我没有足够的代表来评论现有答案,但之所以可能需要将您的应用程序池从“集成”更改为“经典”是因为this MSDN entry
对于集成应用程序池,您只需要处理程序部分;对于经典应用程序池,则需要处理程序和httpHandlers。