サーバー上の共有データセットを参照するサーバーレポートがあります。ページにを追加しReportViewer
、レポートサーバーのURLとレポートパスのプロパティを設定すると、正常に機能します。
レポートのxmlを確認して前処理を行う必要があるため、次のようにします。-
以下を使用してレポートを手動でダウンロードします
ReportingService2010.GetItemDefinition(path)
。次に、これをに変換しXDocument
ます。前処理を行います-これはデータセットとは何の関係もありません。
以下を使用して、xml定義をレポートビューアにロードします。
XDocument processedDocument; using (var sr = new StringReader(processedDocument.ToString())) { viewer.ServerReport.LoadReportDefinition(sr); }
レポートを表示しようとすると、サーバーのエラーログに次のエラーが表示されます。
Microsoft.ReportingServices.Diagnostics.Utilities.InternalCatalogException:
共有データセット定義ストリームが存在しません。
エラーの核心にたどり着くために、ステップ2を完全に削除して、レポートをダウンロードし、xmlに変換してから、xmlをにロードするだけReportViewer
です。
データセットがレポートに埋め込まれている場合、この問題は発生しません。
ここで何が起こっているのか考えはありますか?
ETA:
レポートをダウンロードし、XDocumentに変換し、byte []に変換してから、ReportingService2010.SetItemDefinition()を使用してレポートをサーバーに保存すると、ReportViewerに正常に表示されます(パスが指定されている場合)。
これは、問題がxml <->byte[]変換にないことを意味します。ReportViewerがパスを使用してレポートをダウンロードするとき、参照されている共有データセットに対して、私が行っていないことを行っている必要があります。