报表查看器Web控件HTTP处理程序尚未在应用程序的web.config文件中注册

问题描述 投票:20回答:11
    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>
asp.net visual-studio-2008 httphandler rdlc
11个回答
11
投票

我遇到了同样的问题。发生的事情是我将Report loading例程放在Page_Load上,并没有将它包装在if (!IsPostBack)中。 ReportViewer对页面进行POST,这就是触发Page_Load并重新加载报告,不知何故弄乱它。将一切都放在if (!IsPostBack)之后,它就像一个魅力。


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>

0
投票

我没有足够的代表对现有答案发表评论,但之所以可能需要将您的应用程序池从集成更改为经典是因为this MSDN entry

使用集成应用程序池,您只需要处理程序部分,使用经典应用程序池,您需要处理程序和httpHandler。


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" />


7
投票

当我将应用程序池从Integrated更改为Classic时,问题也随之消失。


1
投票

在我更改了我的查询调用的存储过程的参数而没有刷新SSRS设计器中的数据集之后,这个问题出现了,所以你可以试试这个。


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使用的库和使用运行时的库的版本冲突。微软给出的错误有点误导。


0
投票

我没有改变应用程序池中的任何内容只是添加了这一行:

<Add name = "Reserved-ReportViewerWebControl-axd" path = "Reserved.ReportViewerWebControl.axd" verb = "*" type = "Microsoft.Reporting.WebForms.HttpHandler" resourceType = "Unspecified" />

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,一切正常。


0
投票

如果您使用WCF服务从数据库中检索数据,即使您已将HTTP处理程序添加到web.config文件,也可能会遇到此问题。

在这种情况下,您还必须将服务端点,行为和绑定添加到web.config以使其工作。


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>
© www.soinside.com 2019 - 2024. All rights reserved.