Asp.net 报表查看器控件(Web)显示空白报表

Asp.net 报表查看器控件(Web)显示空白报表,asp.net,sql-server,reporting-services,webforms,reportviewer,Asp.net,Sql Server,Reporting Services,Webforms,Reportviewer,我有一个web表单,其中包含一个ReportViewer控件和一个DIV元素,这样我就可以看到页面实际呈现的情况。我看到我的页面被正确加载,我看到报告服务在Fiddler中被访问,但从来没有显示任何内容 目前,我使用的是一个静态文本的报告,没有任何查询,以确保隔离问题 我的网页如下: 这是报表查看器页面。。。 显示报告的代码为: 受保护的无效页面加载(对象发送方,事件参数e) { this.ReportViewer1.ServerReport.ReportServerUrl=Configur

我有一个web表单,其中包含一个ReportViewer控件和一个DIV元素,这样我就可以看到页面实际呈现的情况。我看到我的页面被正确加载,我看到报告服务在Fiddler中被访问,但从来没有显示任何内容

目前,我使用的是一个静态文本的报告,没有任何查询,以确保隔离问题

我的网页如下:


这是报表查看器页面。。。
显示报告的代码为:

受保护的无效页面加载(对象发送方,事件参数e)
{
this.ReportViewer1.ServerReport.ReportServerUrl=ConfigurationFacade.ReportServerUri;
this.ReportViewer1.ServerReport.ReportPath={path to report name};
this.ReportViewer1.ServerReport.ReportServerCredentials=new ReportServerCredentials();//实现IReportServerCredentials的自定义类,如web各地所述,包括SO
this.ReportViewer1.ServerReport.Refresh();
}
我的web.config文件根据需要配置了HttpHandler:


以及:


服务器运行Windows 2008和SQL server 2008 R2

我正在使用SQL Server 2012版本的查看器,因为我们正在将环境更新到2012

我已反复验证报告是否可以从ReportManager访问,没有任何问题

我一直试图在IE9中访问它,看到了其他浏览器的各种问题

我目前(仅用于测试)将我的凭据作为报表服务器凭据传递。我是Reporting Services管理员,也是服务器上server administrators组的成员

我已经检查了事件日志和ReportServerService日志,没有发现任何问题

更新:将AsyncRendering更改为false,并确保我不会尝试使用空集合“设置参数”,这一点基本上得到了解决:

this.ReportViewer1.AsyncRendering=false;
我在这里的配置/代码中缺少了什么?

MSDN中有一个讨论异步渲染工作原理的部分

此外,它还提到(如注释中所述)同步呈现将内容嵌入页面中,而异步呈现将内容呈现在框架中。框架的大小“难以计算”,SizeToReportContent属性被忽略

由于除非同步呈现报告,否则报告不会显示,因此问题必须在使用帧时出现

在注释中提到的情况下,如果使用相对高度,异步呈现报告将控件高度折叠为零像素。这可以解释为什么什么也不显示。您可以尝试指定控件的高度。那篇文章中还有其他建议


假设您的问题出现在SQLServer2008R2 SSRS版本中,我相信它来自VS2008。我认为SQL Server 2012 SSR借鉴了VS 2010,而VS 2010不应该存在这些问题,因此当您完成升级时,这个问题可能会消失。

我有完全相同的症状:报告呈现时页面完全空白。对我来说,这是生产中的情况,但它在开发环境中起作用

报告有两个参数,在RDL中都没有指定默认值。在用aspx代码调用报告时,我意外地只传递了一个参数。第二个参数在开发机器的报表服务器上设置了默认值,但在生产环境中没有设置。(是的,报表服务器允许独立于RDL文件中的默认设置指定参数默认值。)因此,报表将在开发中呈现,而不是在生产中呈现


我通过使用Fiddler查看响应XML发现了这一点。它包含一个元素,告诉我参数值无效。不幸的是,报表查看器本身没有显示任何有关缺少参数的错误消息,只显示一个空白页,这使得问题的根源很难找到。

我的报表也显示为空白。我玩了这些属性,它终于出现了

在aspx页面中更改ReportViewer控件上的ProcessingMode属性对我很有用:


这就是我所拥有的:


web.config:


...

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

当您获得空白报告时,会出现几个问题:

  • IIS管道;IIS6与IIS7及以上版本 确保已正确注册HttpHandler
  • IIS7设置

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

    如果错过了正确的注册,您可以尝试将IIS应用程序池切换到
    Classic
    模式

    如果您的注册正常,您应该能够使用集成模式

  • 另一个处理程序干扰ReportViewer

  • 在我的情况下是这样的。Spile是一个非常强大的工具,它可以在开发人员机器上与ReporViewer配合使用,但在部署的客户服务器上存在问题。解决方案很简单,jst从web.config中删除所有glimse设置

    只是一个愚蠢的检查/问题:您是否也用一个新的基本报告(例如,只有一个硬编码文本的文本框)检查了这个问题?另外,您可以添加您正在使用的ReportViewer控件的哪个版本吗?是的,目前,我正在使用