0

ローカル レポートを含む Asp.net MVC Web サイトで SSRS レポートを使用しようとしています。

この投稿に記載されているすべてのことを試しましたが、代わりに次のメッセージで非表示の div が引き続き表示されます。

レポート ビューアー Web コントロール HTTP ハンドラーがアプリケーションの web.config ファイルに登録されていません。web.config ファイルの system.web/httpHandlers セクションに追加するか、インターネット インフォメーション サービス 7 以降の場合は system.webServer/handlers セクションに追加します。

ハンドラーは Web 構成に正しく追加されており、aspx ページに直接移動するとレポートが機能します (.

私はRouteExistingFiles = false次のルートを無視しました:

{resource}.axd/{*pathInfo};
{resource}.aspx/{*pathInfo};
{resource}.ascx/{*pathInfo};

BlockViewHandlerwebconfigから削除して無効にしました。

Visual Studio 2012 (ver 11.0.0.0) に Microsoft.ReportViewer を使用しています

編集ASPX マスター ページで Razor ビューを使用することに関する Scot Hanselmanの投稿 があります。Razor レイアウトで aspx ユーザー コントロールを使用して、まったく逆のことを行っていますが、この Microsoft レポート ビューアーはこのアプローチでは機能しません。

4

1 に答える 1

1

あなたのコメントのおかげで、機能していない理由がわかりました。

レポート ビューアーを使用するユーザー コントロールと、そのユーザー コントロールを使用してレポートを表示する aspx ページがあります。myhost/Views/Shared/ReportViewer.aspx のようなレポートに直接移動すると機能しますが、myhost/report/myreport のようなルーティングを使用すると機能しません。

ページに直接移動すると、「従来の」Web フォーム インフラストラクチャによってレンダリングされるため、レポート ビューアーに必要なすべての要素 (ビュー ステート、スクリプト マネージャー、およびその子) が利用可能であり、レポート ビューアーは正常に動作します。

ルーティングを使用してナビゲートするときは、コメントを作成します。

はい、Html.RenderPartial("ReportControl") を使用してレポート ユーザー コントロールをレンダリングするカミソリ ビューを返す MVC コントローラーによってレポート ビューアーが処理されるようにするルートを作成します。

この場合、従来の Web フォームをかみそりのページのようにレンダリングします。これを行うと、レポート ビューアー コントロールに必要なすべてのインフラストラクチャ (特にビュー ステート) が失われ、機能しなくなります。

そのため、レポート ビューアー ページを従来の Web フォームとして表示する必要があります。JavaScriptを使用して、新しいウィンドウ/タブで開くことができます。それでも既存の MVC ページに統合したい場合、唯一の解決策は、 を使用し<iframe>てその中にレポートをレンダリングすることです。

MVC ページに直接統合する別のソリューションは、Reporting Services Web サービスを使用してレポートをレンダリングし、出力をブラウザーに送信することです (たとえば、.jpg 画像または PDF ドキュメントとして)。ただし、どちらの形式を選択しても、レポート ビューアーの対話性は失われます。

于 2014-01-27T16:01:29.523 に答える