asp.net - 报告查看器控件 (Web) 显示空白报告

标签 asp.net sql-server reporting-services webforms reportviewer

我有一个包含 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 文件已根据需要配置了 HttpHandler:

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

这里的配置/代码中缺少什么?

最佳答案

我对此问题的解决方案与尝试将报表查看器高度设置为 100% 有关。这导致没有报告显示。将高度更改为 px 值(即 900px)即可使报表查看器正常工作。

关于asp.net - 报告查看器控件 (Web) 显示空白报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12847671/

相关文章:

c# - 运行多个进程、C++ 和 Excel 导致的错误

c# - 想要解除下拉列表的绑定(bind)吗?

c# - 无法加载 SqlServerSpatial.dll

java - 可以使用哪些语言在 sql server 报告中添加自定义代码?

asp.net - 通过querystring将参数传递给ssrs

c# - 使用 ASP.NET Identity 创建默认用户帐户

c# - 脚本 bundle 问题 - 正确的顺序

sql-server - Visual Studio 2010 - 无法构建包含导入数据库的数据库项目

sql - 从 (SELECT (SELECT ()) 中选择 SUM()

reporting-services - RDLC 报告错误 "Report item expressions can only refer to other report items within the same grouping scope or a containing grouping scope."