2012-10-11 95 views
17

我有一個包含ReportViewer控件的Web表單,一個DIV元素,所以我可以看到該頁面實際呈現。我看到我的頁面正確加載,我看到報告服務正在Fiddler中訪問,但從未顯示任何內容。報表查看器控件(Web)顯示空白報表

目前,我正在使用帶有靜態文本的報告,對其沒有任何查詢,以確保我將問題隔離開來。

我的頁面如下:

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

And:

<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日誌,並沒有發現任何不妥。

UPDATE:看起來像當AsyncRendering更改爲false,並確保我不會嘗試「SetParameters」用空的收集,這主要是得到清理:

this.ReportViewer1.AsyncRendering = false; 

我是什麼在這裏配置/代碼丟失?

+0

只是一個愚蠢的檢查/問題:你有沒有用新的,基本的(例如只是一個帶有硬編碼文本的文本框)報告來檢查它?另外,您可以添加您使用的ReportViewer控件的哪個版本? – Jeroen

+0

是的,目前我正在使用一個帶有靜態文本的簡單頁面,只是爲了確保我能夠隔離問題。 – reallyJim

+1

您是否仍然有問題,或者您的更新是否意味着您已經解決了問題? –

回答

1

MSDN上有this blog entry,它討論了異步呈現的工作原理。

此外,它提到(如在評論中所說)同步呈現將內容嵌入頁面中,而異步呈現呈現框架中的內容。框架的大小是「難以...計算」和SizeToReportContent屬性被忽略。

由於您的報告將不會顯示,除非它是同步呈現,問題必須在使用幀。

the article提到的評論中,如果使用相對高度,異步渲染報告會將控件高度摺疊爲零像素。這可以解釋爲什麼什麼都不顯示。您可以嘗試指定控件的高度。該文章中還有其他建議。

這就是假設您的問題出現在SQL Server 2008 R2 SSRS版本中,我相信這是從VS 2008中提取的。SQL Server 2012 SSRS我認爲借鑑VS 2010並不存在這些問題,所以當您完成升級後,此問題可能會消失。

1

我有完全相同的症狀:報告呈現完全空白頁面。對於我來說,生產就是這樣,但它在開發環境中工作。

報告有兩個參數,並且在RDL中都沒有指定默認值。當在後面的aspx代碼中調用報告時,我不小心只傳遞了一個參數。第二個參數在開發機器的報表服務器上設置了默認值,但未在生產環境中設置。 (是的,報表服務器允許獨立於RDL文件中的默認設置來指定參數默認值。)因此報表呈現在開發中,但不在生產中。

我通過查看與Fiddler的響應XML來發現此問題。它包含一個元素,告訴我參數值無效。不幸的是,報告查看器本身並沒有顯示關於缺少參數的任何錯誤消息,只是顯示一個空白頁面 - 這使問題的根源很難找到。

+0

如何查看響應XML?我的項目設置的方式,沒有地方可以在源代碼中放置一個斷點來觀察響應。有沒有辦法調整日誌記錄,或者什麼? –

+0

謝謝。這解決了我的問題。我有一個沒有使用默認值的未使用參數。一旦我刪除它,我的報告顯示正確。 – user3340627

+0

取而代之的是使用Fiddler,你可以在分配報告參數(如ReportViewer1.LocalReport.SetParameters(lst)')之後放置一個斷點,然後在立即窗口中將參數賦值給任意一個變量,如var r = reportViewer1。 LocalReport.GetParameters()',然後用QuickWatch探索「r」中每個參數的內容。您可以輕鬆識別有問題的值參數。 –

0

我的報告顯示爲空白。我玩過這些房產,終於出現了。

在aspx頁面ReportViewer控件更改ProcessingMode物業工作對我來說:

<rsweb:ReportViewer ID="ReportViewer1" runat="server" 
    Width="100%" ProcessingMode="Remote"> 
</rsweb:ReportViewer> 

這是我有:

<rsweb:ReportViewer ID="ReportViewer1" runat="server" ZoomMode="PageWidth" 
    Font-Names="Verdana" Font-Size="8pt" Width="100%" ProcessingMode="Remote" 
    ShowParameterPrompts="False" ShowToolBar="True" ShowCredentialPrompts="False" 
    ShowFindControls="False" ShowZoomControl="False" CssClass="ReportViewer"> 
</rsweb:ReportViewer> 

的web.config:

<configuration> 
    <connectionStrings> 
    <add name="ApplicationServices" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient"/> 
    </connectionStrings> 
    <system.web> 

    <httpHandlers> 
     <add path="Reserved.ReportViewerWebControl.axd" verb="*" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" validate="false" /> 
    </httpHandlers> 

    <compilation debug="true" targetFramework="4.0"> 
     <assemblies> 
     <add assembly="Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/> 
     <add assembly="Microsoft.ReportViewer.Common, Version=10.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/> 
     <add assembly="Microsoft.Build.Framework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/> 
     <add assembly="System.Management, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/> 
     </assemblies> 
    </compilation> 
    <authentication mode="Forms"> 
     <forms loginUrl="~/Account/Login.aspx" timeout="2880"/> 
    </authentication> 
    <membership> 
     <providers> 
... 
     </providers> 
    </roleManager> 
    </system.web> 
    <system.webServer> 
    <modules runAllManagedModulesForAllRequests="true"/> 
    <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> 
</configuration> 
3

我對此問題的解決方案與嘗試將報表查看器高度設置爲100%有關。這導致沒有報告顯示。將高度更改爲px值(即900px)可使reportviewer正常工作。

0

還有,當你得到空白報道了幾個問題:

  1. IIS管道; IIS 6 VS IIS7及以上 請確保您有正確registerd的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> 

More details

如果錯過了正確的註冊,您可以嘗試IIS應用程序池切換到Classic模式 Managed Pipeline Mode

如果您的註冊是好的,你應該能夠使用Integrated模式

  • 另一個處理程序與的ReportViewer
  • 干涉。我的情況下,它是Glimpse。Glimpse是一個非常強大的工具,它與開發人員機器上的ReporViewer一起工作良好,但它在部署的客戶服務器上存在問題。解決方案很簡單,jst從web.config中刪除所有的glimse設置

    相關問題