17

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 ファイルは、必要に応じて 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>

と :

<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 を実行します。

環境を 2012 に更新中なので、SQL Server 2012 バージョンのビューアーを使用しています。

ReportManager からレポートにアクセスできることを繰り返し確認しましたが、何の問題もありません。

私は IE9 でこれにアクセスしようとしてきましたが、他のブラウザーでさまざまな問題が報告されています。

私は現在 (テストのみ)、自分の資格情報をレポート サーバーの資格情報として渡しています。私は Reporting Services 管理者であり、サーバーのサーバー管理者グループのメンバーでもあります。

イベント ログと ReportServerService ログの両方を確認しましたが、問題はありませんでした。

更新: AsyncRendering を false に変更し、空のコレクションで "SetParameters" を試行しないようにすると、これはほとんど解決されます。

this.ReportViewer1.AsyncRendering = false;

ここの構成/コードで何が欠けていますか?

4

5 に答える 5

4

この問題に対する私の解決策は、レポート ビューアーの高さを 100% に設定しようとすることに関連していました。これにより、レポートが表示されなくなりました。高さを px 値 (つまり 900px) に変更すると、レポートビューアが機能しました。

于 2015-03-11T18:07:23.403 に答える
1

MSDN には、非同期レンダリングのしくみについて説明しているブログ エントリがあります。

さらに、(コメントで述べたように)同期レンダリングはコンテンツをページに埋め込み、非同期レンダリングはコンテンツをフレームにレンダリングすることを述べています。フレームのサイズは「計算が難しい」ため、SizeToReportContent プロパティは無視されます。

レポートは同期的に表示されない限り表示されないため、問題はフレームの使用にあるはずです。

コメントで言及されている記事では、相対的な高さが使用されている場合、レポートを非同期的にレンダリングすると、コントロールの高さがゼロ ピクセルに縮小されます。これは、何も表示されない理由を説明できます。コントロールの高さを指定してみてください。その記事には他の提案もあります。

これは、問題が SQL Server 2008 R2 SSRS バージョンにあると想定しています。これは、VS 2008 から引き出されたと考えられます。この問題はなくなるかもしれません。

于 2013-04-02T15:28:42.480 に答える
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>
于 2014-01-29T22:44:25.167 に答える