我有一个包含 ReportViewer 控件和 DIV 元素的 Web 表单,因此我可以看到页面实际呈现。我看到我的页面正确加载,我看到在 Fiddler 中访问了报告服务,但从来没有显示任何内容。
目前,我正在使用带有静态文本的报告,没有对其进行查询,以确保我隔离了问题。
我的页面如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ReportViewer.aspx.cs" Inherits="PeopleNet.Web.Views.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="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Scripts>
<asp:ScriptReference Path="~/scripts/jquery-1.7.2.js" />
<asp:ScriptReference Path="~/scripts/fixReportViewer.js" />
</Scripts>
</asp:ScriptManager>
<div>
This is the report viewer page...
</div>
<rsweb:ReportViewer ID="ReportViewer1" runat="server"></rsweb:ReportViewer>
</form>
</body>
</html>
显示报告的代码是:
protected void Page_Load(object sender, EventArgs e)
{
this.ReportViewer1.ServerReport.ReportServerUrl = ConfigurationFacade.ReportServerUri;
this.ReportViewer1.ServerReport.ReportPath = { path to report name };
this.ReportViewer1.ServerReport.ReportServerCredentials = new ReportServerCredentials(); // custom class implementing IReportServerCredentials as described in various places around the web, including SO
this.ReportViewer1.ServerReport.Refresh();
}
我的 web.config 文件根据需要配置了 HttpHandlers:
<system.web>
<!-- abbreviated... -->
<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>
</system.web>
和 :
<system.webServer>
<!-- abbreviated... -->
<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>
该服务器运行 Windows 2008 和 SQL Server 2008 R2。
我正在使用查看器的 SQL Server 2012 版本,因为我们正在将环境更新到 2012。
我已经反复验证可以从 ReportManager 访问该报告,没有任何问题。
我一直在尝试在 IE9 中访问它,并看到其他浏览器说明的各种问题。
我目前(仅用于测试)将我的凭据作为报表服务器凭据传递。我是 Reporting Services 管理员,也是服务器上服务器管理员组的成员。
我检查了事件日志和 ReportServerService 日志,没有发现任何问题。
更新:看起来当将 AsyncRendering 更改为 false 并确保我不尝试使用空集合“SetParameters”时,这大部分都被清除了:
this.ReportViewer1.AsyncRendering = false;
我在这里的配置/代码中缺少什么?