簡體   English   中英

報表查看器控件未顯示SSRS的報表

[英]Report Viewer control not showing report from 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身份驗證連接到SSRS和SQL Server。

ReportViewer不在Web表單設計器中創建,因此我無法在設計時在其上設置任何屬性。

所以我懷疑我的問題是運行時的身份驗證問題。 我沒有關於如何調查和解決這個問題的想法。

頁面上的控制代碼:

    <ssrs:ReportViewer ID="ReportViewer" runat="server" ProcessingMode="Remote" Width="100%"
        Height="690" ShowParameterPrompts="false" AsyncRendering="false"/>

嘗試運行報告后,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中的相關行:

<system.webServer>
  <handlers>
    <add name="ReportViewerWebControlHandler" preCondition="integratedMode" verb="*" path="Reserved.ReportViewerWebControl.axd" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
  </handlers>
</system.webServer>

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


ETA 24 Nov:我最終在應用程序日志中輸入了一個條目: HttpHandlerInputException, Missing URL parameter: IterationId 此問題已在另一個STOF問答中討論過

按照@CodeswithHammer的要求,我將這個引用添加到另一個線程,只是為了節省人們一些時間來搜索它。

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

當您在應用程序和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" %>

下面是我用來綁定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的報表

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM