【发布时间】: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