【问题标题】:Report Viewer not working because of Report Viewer Configuration Error由于报表查看器配置错误,报表查看器无法工作
【发布时间】:2017-08-04 11:10:04
【问题描述】:

这里的任何人都可以帮助我解决在我的 ASP MVC 应用程序上使用 Report Viewer 服务器控件的问题。问题是 Report Viewer 的 web.config 设置总是给我一个错误,即使我已经为 Report Viewer 设置了配置。但是当我尝试创建一个新的 Web 应用程序来测试 Report Viewer 时工作正常。

这是错误:

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=11.0.0.0, Culture=neutral,
PublicKeyToken=89845dcd8080cc91" /> to the system.web/httpHandlers
section of the web.config file, or add <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" /> to the system.webServer/handlers
section for Internet Information Services 7 or later.

我已经在互联网上针对此问题采取了其他解决方案,但我仍然一遍又一遍地遇到相同的错误。

在查看开发人员工具时,我发现 Reserved.ReportViewerWebControl.axd 返回 404(未找到),即使我的 web.config 中有这个,我认为这会导致报告中的错误查看器。

这是我的 web.config:

<system.web>
<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.web>

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

这是我在 aspx 中的代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ReportViewer.aspx.cs" Inherits="HSESA.Web.Reports.ReportViewer" %>

<%@ Register Assembly="Microsoft.ReportViewer.WebForms, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" Namespace="Microsoft.Reporting.WebForms" TagPrefix="rsweb" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="RVForm" runat="server">
        <div>
            <asp:ScriptManager ID="RVScriptManager" runat="server"></asp:ScriptManager>
            <rsweb:ReportViewer ID="reportViewer1" runat="server" Font-Names="Verdana" Font-Size="8pt" WaitMessageFont-Names="Verdana" WaitMessageFont-Size="14pt">
               <LocalReport  ReportPath="Reports\AssessmentByRegionReport.rdlc">
               </LocalReport>
        </rsweb:ReportViewer>
        </div>
    </form>
</body>
</html>

提前感谢您的所有帮助。 ^_^

【问题讨论】:

  • 您是否将ReportViewer 加载例程放入Page_Load 方法中?似乎您需要使用IsPostBack 属性检查回发状态。
  • 是的,我的 Page_Load 中有这个。我有报告查看器的数据源,但仍然出现相同的错误。 :(
  • 你能在Page_Load方法中显示代码吗?正如我所想,您需要 IsPostBack 检查以区分首次调用与 GET 和后续 POST 请求。
  • if (!IsPostBack) { System.Data.DataSet ds = GetDataSet(); reportViewer1.ProcessingMode = ProcessingMode.Local; reportViewer1.LocalReport.ReportPath = Server.MapPath("~/Reports/AssessmentByRegionReport.rdlc"); ReportDataSource rds = new ReportDataSource("AssessmentByRegionDataSet", ds.Tables[0]); reportViewer1.LocalReport.DataSources.Clear(); reportViewer1.LocalReport.DataSources.Add(rds); reportViewer1.LocalReport.Refresh(); }
  • @TetsuyaYamamoto 抱歉,我不知道如何评论代码,就像我在问题中所做的那样,这就是为什么它以这样一个混乱的代码结束。

标签: c# angularjs asp.net-mvc reportviewer


【解决方案1】:

我已经知道如何解决我自己的问题。我只是将报表查看器的配置放在 Web.config 中 &lt;system.webServer&gt; 中的 &lt;handler&gt; 内的其他配置之上。

<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"/>**
  <add name="MiniProfiler" path="mini-profiler-resources/*" verb="*" type="System.Web.Routing.UrlRoutingModule" resourceType="Unspecified" preCondition="integratedMode" />
  <add name="WebResourceHandler" path="WebResource.axd" verb="GET" type="System.Web.Handlers.AssemblyResourceLoader" />
  <!--<add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
  <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />-->
  <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
  <add name="GifFiles" path="*.gif" verb="GET,HEAD,POST" type="System.Web.StaticFileHandler" />
  <add name="jpg" path="*.jpg" verb="GET,HEAD,POST" type="System.Web.StaticFileHandler" />
  <add name="png" path="*.png" verb="GET,HEAD,POST" type="System.Web.StaticFileHandler" />
  <add name="js" path="*.js" verb="GET,HEAD,POST" type="System.Web.StaticFileHandler" />
  <add name="css" path="*.css" verb="GET,HEAD,POST" type="System.Web.StaticFileHandler" />
  <add name="ico" path="*.ico" verb="GET,HEAD,POST" type="System.Web.StaticFileHandler" />
  <add name="reg" path="*.reg" verb="GET,HEAD,POST" type="System.Web.StaticFileHandler" />
  <add name="aspx" path="*.aspx" verb="GET,HEAD,POST" type="System.Web.UI.PageHandlerFactory" />
  <add name="star" path="*" verb="GET,HEAD,POST" type="System.Web.StaticFileHandler" />
  <remove name="ExtensionlessUrlHandler-Integrated-4.0"/>
  <remove name="OPTIONSVerbHandler"/>
  <remove name="TRACEVerbHandler"/>
  <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0"/>
</handlers>
</system.webServer>

它位于&lt;handler&gt; 中最后一项的末尾,因为它会在保存/构建应用程序时自动放在那里。但是我仍然不知道它在&lt;handler&gt; 末尾时导致错误的确切原因,但我的猜测是web.config 无法访问它?如果其他人知道原因,如果我错了,请纠正我,这样我也可以知道。但后来它解决了我的问题:)

【讨论】:

    【解决方案2】:

    我通过删除报告数据选项卡中未在报告中使用的所有参数解决了这个问题。

    而 web.config 是:

    <system.webServer>
      <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" />
          <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
    </handlers>
    </system.webServer>
    <system.web>
    

    【讨论】:

      猜你喜欢
      • 2014-07-18
      • 1970-01-01
      • 2017-02-16
      • 2010-12-20
      • 1970-01-01
      • 2016-05-11
      • 2014-03-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多