WebViewerコントロール使用時にレポートが表示されない

文書番号 : 30462     文書種別 : 使用方法     最終更新日 : 2011/02/07
文書を印刷する
対象製品
ActiveReports for .NET 6.0J Professional
詳細
WebViewerコントロールを使用して、レポートをブラウザ上に表示しようとしても、以下のようなエラーが発生し、正常に動作しない場合がございます。

  • Flashビューワ形式の場合
    • ドキュメントの読み込み中に、エラーが発生しました。追加情報: Error #2032
    • 'swfobject' は宣言されていません。
  • その他の形式の場合
    • No Report Specified.

これらのエラーが発生する場合、様々な要因が考えられます。以下の内容をご確認ください。

  1. 必要なファイルが正しく配置されていない
  2. IIS の設定に誤りがある
  3. Web.Configファイルの記述に誤りがある
  4. Webガーデン構成やロードバランサーの構成にしている
  5. WebViewerコントロールに対して重複してレポートを設定している
  6. レポート生成処理時に問題が発生している
  7. 仮想プリンタの設定が行われていない
  8. サーバーが高負荷状態になっている
  9. 製品付属のサンプルを実行した場合の動作を確認する


  1. 必要なファイルが正しく配置されていない
    ActiveReports for .NET の動作に必要なファイルが正しく配置されているかどうかご確認ください。

    特に、Flashビューワを使用する場合は、"ActiveReports.FlashViewer.swf"が、Flashビューワを使用しているページと同じフォルダに存在している必要があります。

    配置すべきファイルや配置場所等については、
    こちらの内容をご覧ください。

  2. IIS の設定に誤りがある
    WebViewerコントロールを使用した場合、基本的に、以下のような動作になっています。
    (特に Flashビューワ形式や PDF形式の場合)

    拡大表示

    IIS に対して適切な Handler の設定が行われていない場合、④~⑤の処理が正常に動作せず、Flashビューワ上にレポートが表示されず、冒頭で紹介したようなエラーが発生します。

    製品ヘルプの以下のトピックに記載されております設定について、適切に行われているかどうか、ご確認ください。

    PowerTools ActiveReports for .NET 6.0J
     - ActiveReports for .NETユーザーガイド
      - ActiveReportsを使用するための準備
       - Webアプリケーションの実行前に必要な設定
        - HTTPハンドラおよびWebViewerを使用するための事前準備
        - HTTPハンドラおよびWebViewerを使用するための事前準備 - IIS 7.0(Classic.NET AppPool)
        - HTTPハンドラおよびWebViewerを使用するための事前準備 - IIS 7.0(DefaultAppPool)

    特に、以下の内容にご注意ください。
    • マッピングの設定は、拡張子の種類に応じて、以下のように異なります。チェックボックスの設定に誤りがないようにご注意ください。

      ◆「.rpx」
       IIS 6.0:「ファイルの存在を確認する」をON
       IIS 7.0:「要求のマップ先が次の場合のみハンドラを呼び出す」をON
       
      ◆「.ActiveReport」及び「.ArCacheItem」
       IIS 6.0:「ファイルの存在を確認する」をOFF
       IIS 7.0:「要求のマップ先が次の場合のみハンドラを呼び出す」をOFF

    • IIS 7.0 の場合、"Classic.NET AppPool"の場合と"DefaultAppPool"の場合で、設定する内容が以下のように異なります。ご注意ください。
       "Classic.NET AppPool":[スクリプトマップの追加...]
       "DefaultAppPool"   :[マネージハンドラの追加...]


    • IIS 7.0(DefaultAppPool)の場合、[マネージ ハンドラの編集]ダイアログの[種類(T)]欄に入力する文字列には、ActiveReports のアセンブリバージョンを記述する箇所がございます。このバージョンに誤りがないよう、ご注意ください。


    • 上記ヘルプの手順に従って、「既定のWebサイト(Default Web Site)」に対して、マッピングの設定を行ったにもかかわらず、その設定が個々のWebサイトに継承されない事象が事例として報告されております。

      個々のWebサイトに対しても、マッピングの設定が正常に適用されているかご確認ください。

  3. Web.Configファイルの記述に誤りがある
    デザイナ上で WebViewerコントロールをページ(.aspx)上に配置した時、Web.Configファイル内の<httpHandlers>セクションに自動的に以下の文字列が追加されます。

    <httpHandlers>
     <add verb="*" path="*.rpx" type="DataDynamics.ActiveReports.Web.Handlers.RpxHandler, ActiveReports.Web, Version=6.x.xxxx.x, Culture=neutral, PublicKeyToken=cc4967777c49a3ff" />
     <add verb="*" path="*.ActiveReport" type="DataDynamics.ActiveReports.Web.Handlers.CompiledReportHandler, ActiveReports.Web, Version=6.x.xxxx.x, Culture=neutral, PublicKeyToken=cc4967777c49a3ff" />
     <add verb="*" path="*.ArCacheItem" type="DataDynamics.ActiveReports.Web.Handlers.WebCacheAccessHandler, ActiveReports.Web, Version=6.x.xxxx.x, Culture=neutral, PublicKeyToken=cc4967777c49a3ff" />
    </httpHandlers>
    

    ※"6.x.xxxx.x"の部分は、使用する ActiveReports のアセンブリバージョンによって変化します。

    この記述が不足していると WebViewerコントロールは正常に動作しません。
    問題が発生する環境に配置されている Web.Configファイルについて、上記の記述が正しいかどうかご確認ください。

    なお、IIS 7.0 をご利用の場合、本記述が不要の場合もあります。詳細は、製品ヘルプ「HTTPハンドラおよびWebViewerを使用するための事前準備 - IIS 7.0(DefaultAppPool)」のトピックをご覧ください。

  4. Webガーデン構成やロードバランサーの構成にしている
    WebViewerコントロールは、その仕様上、Webガーデン構成(複数のワーカープロセスが起動した状態)ではご利用頂けません。

    詳細につきましては、以下の文書をご覧ください。

    [Webガーデンを使用した場合、WebViewerにレポートが正しく表示されない場合がある]
    https://dev.grapecity.co.jp/support/kb/detail.asp?id=30046

    問題が発生するアプリケーションについて、Webガーデン構成になっていないか、ご確認ください。

    また、Webサーバーをロードバランサーの構成にしている場合も、WebViewerコントロールは正常に動作致しません。これは、WebViewerコントロールの仕様上の制限事項となります。

    詳細につきましては、製品ヘルプの以下のトピックをご覧ください。

    PowerTools ActiveReports for .NET 6.0J
     - ActiveReports for .NETユーザーガイド
      - よくある質問
       - Web
        - Web上でレポートが正しく表示されない

  5. WebViewerコントロールに対して重複してレポートを設定している
    WebViewerコントロールに、表示するレポートを設定する方法には、以下の2つの方法がございます。

    (1) コード上で Reportプロパティにレポートのインスタンスを設定
    (2) デザイナ画面で ReportNameプロパティを設定

    ReportNameプロパティと Reportプロパティが両方とも設定されている場合、ReportNameプロパティで設定されているレポートの方が優先されるため、コード上で Reportプロパティに行った設定が無視されて、デフォルトの設定でレポートが生成されます。

    ReportNameプロパティで設定されているレポートが何らかの原因で生成に失敗した場合、WebViewerコントロール上にレポートが正しく表示されないなどの問題が発生致します。

    もし、上記(1)と(2)の両方の方法を使用している場合には、予めデザイン時に WebViewerコントロールの ReportNameプロパティを空白に設定した上で、再度動作をご確認ください。

  6. レポート生成処理時に問題が発生している
    WebViewerのReportプロパティにレポート(レポートのインスタンス)がセットされていない場合や、レポートが正常に作成されなかった場合に、冒頭に挙げたような問題が発生致します。

    例えば、if ステートメントや try-catch ステートメントなどの分岐処理により、WebViewerコントロールの Reportプロパティにレポートがセットされていないといったことはございませんでしょうか。現象発生時の処理内容をご確認ください。

    なお、エラー処理の一般的な方法やエラー発生時のログの出力等につきましては、マイクロソフト社の Webサイトで公開されている以下の情報等をご参考ください。

    [例外処理のタスク]
    http://msdn.microsoft.com/ja-jp/library/98xhbkb8(v=VS.90).aspx

    [例外と例外処理 (C# プログラミング ガイド)]
    http://msdn.microsoft.com/ja-jp/library/ms173160(v=VS.90).aspx

    [アプリケーション、サーバー、およびセキュリティ イベントのログの記録]
    http://msdn2.microsoft.com/ja-jp/library/e6t4tk09.aspx

  7. 仮想プリンタの設定が行われていない
    ActiveReportsは、レポート生成時にも実行環境(サーバー)に接続されたプリンタドライバから用紙サイズ等の情報を取得します。(その際に参照されるプリンタは、基本的に当該環境上で「通常使うプリンタ」に指定されているプリンタになります。)

    適切なプリンタドライバが存在しない場合や、プリンタドライバが存在しても、そのドライバがレポート内で指定している用紙サイズをサポートしていない場合、レポートが正常に作成されない等の問題が発生することがあります。

    その結果、WebViewerコントロールの Reportプロパティにレポートがセットされず、冒頭に挙げたような問題が発生する可能性が考えられます。

    こうした問題を回避する方法として、ActiveReports では仮想プリンタの機能をご用意しております。

    仮想プリンタの設定を行った場合、プリンタドライバからの情報取得を行わず、任意のサイズでレポートを作成します。

    レポートの作成前に、Printerクラスの PrinterNameプロパティに""を設定することで、仮想プリンタ機能を使用できます。(この際、デザイナ上での用紙サイズは、「デフォルトプリンタ」に設定し、コード上で用紙サイズ等を設定することをお勧め致します。)

    仮想プリンタは、レポートを生成する環境と表示・印刷する環境が異なる Webアプリケーションなどで有効な方法です。もし、仮想プリンタの設定を行われていない場合には、実装した上で動作をご確認ください。

    仮想プリンタの具体的な設定方法につきましては、製品ヘルプの以下のトピックが参考になるかと存じます。こちらをご覧ください。

    PowerTools ActiveReports for .NET 6.0J
     - ActiveReports for .NETユーザーガイド
      - ActiveReports for .NETの概要
       - アーキテクチャと概念
        - 仮想プリンタ
      - よくある質問
       - 印刷
        - プリンタドライバがサポートしていない用紙サイズに出力する

  8. サーバーが高負荷状態になっている
    過去の事例では、実行環境(Webサーバ)が高負荷やリソース不足の状態にある条件で、WebViewerコントロールからのレポート出力が正常に行われず、レポートが正常に表示されない事象が確認されております。

    前述2.の図にありますように、WebViewerコントロールはクライアントからレポートの出力要求があった場合、レポートを生成し、一旦ASP.NETのキャッシュ領域にレポートデータを保存する仕様となっております。

    何らかの理由で、このキャッシュデータがクライアントに届く前(②から④の間)に消えてしまうと、レポートが表示されない等の問題が発生します。

    キャッシュが消えてしまう原因の1つに、ワーカープロセス(aspnet_wp.exeまたはw3wp.exe)のメモリのリサイクルが挙げられます。IISでは、ある一定のしきい値を超えた場合に、ワーカープロセスがリサイクルされる仕組みになっていますので、高負荷、リソース不足の状態で、レポートが実行された場合、このリサイクルが発生し、本現象が発生し易い状態となります。

    レポート作成時のメモリ使用量を軽減させる方法については、「レポート作成時のメモリ使用量を軽減させる方法について」をご参照ください。

  9. 製品付属のサンプルを実行した場合の動作を確認する
    直接的な解決策ではございませんが、ご指摘の事象の原因が環境的な要因によるものか、そうでないかを切り分けるために、問題の環境(サーバー)に製品付属のサンプルを配置して実行させた場合に、ご指摘の事象と同様の事象が発生するかどうか、お試しください。

    WebViewerコントロールを使用した Webアプリケーションのサンプルについては、製品ヘルプの以下の内容が参考になると存じます。

    PowerTools ActiveReports for .NET 6.0J
     - ActiveReports for .NETユーザーガイド
      - サンプルと基本操作
       - サンプル
        - Professionalのサンプル
         - Web
          - Professional Web サンプル

    ※製品をインストールしたディレクトリ内の"Samples"フォルダに実際のサンプルプロジェクトが収められております。あわせてご利用ください

    サンプルプロジェクトで問題が発生しない場合には、お客様のアプリケーションの実装内容とサンプルの実装内容に大きな相違がないかをご確認ください。
関連情報
キーワード
問題 Web 印刷・プレビュー