报表查看器控件未显示SSRS的报表

我在VS 2013中使用MS Report Viewer 10; 该项目正在从VS 2010升级。我已经解决了与Report Viewer相关的一系列问题,并使控件本身启动并运行。 我在SSRS中有一些报告,我已经确认报告本身可以正常工作。

我有一个用于数据输入的Web窗体ASPX页面。 它通过JSON将数据传递到包含Report Viewer控件的弹出ASPX页面。

我正在运行IIS Express 7,SQL Server 2008 R2(v10.50)和.NET Framework 4.5的当前目标框架。

报告查看器不返回任何报告 – 没有错误消息,没有报告布局缺少数据,当然也没有完整的报告。 当我通过VS运行具有相同输入的相同报表时,报表预览会显示我期望的结果。

ProcessingMode设置为RemoteReportServerCredentialsnull 。 我研究了这意味着什么,这意味着Report Viewer应该使用当前的网络凭证(即当前用户)连接到SSRS。 我确认当前用户正确匹配我当前的登录信息; 我可以正确使用Windows身份validation连接到SSRS和SQL Server。

ReportViewer不在Web表单设计器中创建,因此我无法在设计时在其上设置任何属性。

所以我怀疑我的问题是运行时的身份validation问题。 我没有关于如何调查和解决这个问题的想法。

页面上的控制代码:

   

尝试运行报告后,SSRS日志包含以下条目:

 library!ReportServer_0-3!1dc8!(datetime): i INFO: RenderForNewSession('(report)') webserver!ReportServer_0-3!1dc8!(datetime, 1 second later): i INFO: Processed report. Report='(report)', Stream='' 

遗留项目使用MS Report Viewer 9.它运行得很好。 我在web.config看到的唯一更改与更高版本以及从IIS 6到IIS 7的更改有关。

由于它出现在评论中,这是web.config中的相关行:

      

我的报告查看器窗口: 报告查看器空白窗口


ETA 24 Nov:我最终在应用程序日志中输入了一个条目: HttpHandlerInputException, Missing URL parameter: IterationId 。 此问题已在另一个STOF问答中讨论过。

根据@CodeswithHammer的要求,我将这个引用添加到另一个线程,只是为了节省人们一些时间来搜索它。

https://stackoverflow.com/a/22000827/1807669

下面是我用来绑定ReportViewer和SSRS报告的代码片段

 ReportViewer1.ProcessingMode = Microsoft.Reporting.WebForms.ProcessingMode.Remote; ReportViewer1.ServerReport.ReportServerCredentials = new ReportServerNetworkCredentials("ReportServerUsername", "ReportServerPassword", ""); ReportViewer1.ServerReport.ReportServerUrl = new Uri("http://mymachinename//ReportServer"); ReportViewer1.ServerReport.ReportPath = "/MyReports/TestReport1"; 

这里ReportServerUrl是在我的机器中配置的SQL报表服务器(SSRS)的路径,在ReportPath中,“MyReports”是SQL报表服务器中的文件夹,其中我有一个名为TestReport1的报表

当您在应用程序和web.config中更新SSRS控件的版本时,还需要在IIS中为其添加新的处理程序。 如果您的映射中有一个,请先删除它并添加一个新映射。

  1. 打开IIS管理器并在IIS部分下选择您的应用程序
  2. 双击Handler Mappings图标在您的操作窗格上
  3. 右键单击“添加托管处理程序”
  4. 对话框打开后,输入以下内容:

    请求路径 :Reserved.ReportViewerWebControl.axd

    键入 :Microsoft.Reporting.WebForms.HttpHandler

    名称 :Reserved-ReportViewerWebControl-axd

  5. 好的,好的

还可以确保您的服务器,凭据和报告路径正确无误。

 var serverReport = this.ReportViewer1.ServerReport; serverReport.ReportServerCredentials = new ReportServerCredentials(userName, password, "yourDomain.com"); serverReport.ReportServerUrl = new Uri("your report server"); serverReport.ReportPath = "yourReportName"; serverReport.Refresh(); 

在你的aspx中:

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