2009-08-12 105 views
7

ASP.NETに付属するMicrosoft ReportViewerを使用していて、レポートの画像の値(パス)を設定する必要があるレポートパラメータがあります。私は、http://で始まる完全なURLとしてパスを提供していますが、これをアプリの相対パス、サイトルートのパスなどとして試してみました。何らかの理由で、画像が常に赤いXとして表示されますPDFにエクスポートされます。私はコード内にコントロールのインスタンスを作成し、プロパティを設定し、応答ストリームに直接エクスポートしてダウンロードを行います。外部の画像を含むASP.NET rdlcで画像が表示されない

私は画像が表示されない問題が何であるか分かりません。だれかがアイデアを持っていれば教えてください。

UPDATE 1

私はそれが私のパブリックWebサーバ上にある場合、私はURLで画像を埋め込むことができると判断しましたが、私は画像ローカルホストで実行している時に埋め込むことはありません。私はlocalhostのために私のブラウザに同じURLを貼り付けるとイメージが正常に開かれることを確認しました。私が知る限り、私は代理人を持っていません。だから私は問題を回避することができますが、私はまだ問題がローカルホストで何かを理解していません。 2

UPDATEは、画像へのURLがブラウザから開いたときに、それが正常に動作することを言及するのを忘れました。

答えて

13

に役立ちます。画像をPDFに表示するには、画像を文書に埋め込む必要があります。したがって、外部画像を使用するには、アプリが画像を取得して文書に保存する必要があります。レポートビューアでこれを実行しようとします。

二つの可能な答え:

まず、PDFに画像をパッケージ化するアプリのために、あなたが指定されているURLから画像を取得することができなければなりません。そのURLが(アプリケーションサーバーの観点から)プロキシの背後にあり、アクセスするために資格情報を必要とする場合は、レポートビューアのデフォルト設定で問題が発生します。

プロキシサーバーが問題になっている場合は、以下に追加できるweb.configの設定を参照してください。また、ネットワーク資格情報を提供する必要があり、アプリがプロキシに対して認証できるようにする必要があります。これを解決する方法はたくさんありますが、最も簡単な方法の1つは、プロキシを通過する権利を持つドメイン上のサービスアカウントとしてアプリケーションを実行することです。一時的にサイトを実行することでこれをテストすることができます(これは恐ろしいセキュリティ方法であるため一時的に行う必要があります)。

使用している画像にアクセスするための認証情報が必要な可能性があります(空のCookieを使用してFirefoxで画像をプルアップし、認証にアクセスする必要があるかどうかを確認してください)。 Windows認証が必要な場合は、プロキシセキュリティと同じソリューションがリモートイメージに必要な認証に適用される可能性があります。他の形式の認証が必要な場合は、イメージをダウンロードしてプロジェクトに埋め込むほうがよいでしょう。

コード内に他の手段を使用してイメージをダウンロードし、バイト配列に変換してレポートに含めることもできます。スタックオーバフローhereを含む、これに関する多くの例がWeb上にあります。

第二は、以下のページを見てみましょう:

http://msdn.microsoft.com/en-us/library/ms251715%28VS.80%29.aspx

を デフォルトでは有効になっていません のReportViewerレポートに外部の画像を使用します。外部イメージを使用するには、 はEnableExternalImages プロパティをコードに設定する必要があります。 ネットワーク設定によっては、 も、外部画像を表示できるように、プロキシ設定を に迂回する必要があります。 Web.configファイルに次の設定を追加して、 ローカルプロキシをバイパスすることができます。

<system.net> 
<defaultProxy> 
<proxy usesystemdefault = "false" bypassonlocal = "true" proxyaddress = "http://<proxyservername>:80/" /> 
<defaultProxy> 
</system.net> 

・ホープ、これらの一方または両方ができます:あなたの Web.configファイルを変更する場合、ネットワークで使用 あるプロキシサーバーの 名を指定してください。

ジェリー

+0

イメージがローカルアプリケーションにあり、Windows認証を使用している場合、Windows認証がローカルで失敗するという一般的な問題が発生している可能性があります。 http://support.microsoft.com/kb/896861 この問題の診断を助けるために、あらゆる種類のエラーまたは認証に失敗した場合は、サーバー上のイベントログをトロールしてください。 Jerry –

+0

ローカルサイトにはどのような種類の認証がありますか?私が示唆したようにIEでイメージをプルアップするか、Firefoxでテストしましたか?イベントログに関連するエラーがありますか? –

+0

私は、画像がブラウザにうまく表示されると言いました。また、レポートを生成するときに、イベントログには何もありません。私はあなたの提案に感謝しますが、それらのどれもが問題を解決するようです。私は画像がおそらく検索され、表示するためにバイト配列に変換されることに同意しますが、これは特にローカルでの問題でありライブでの使用ではないため、避けたいと思います。 –

0
  1. レポートビューアは、相対URLからイメージを取得できますか?私はそれを使用したことがないので、その前提を確認するのが最善です。
  2. Html.Content()ヘルパーを使用してURLを設定しようとしましたか? URLに問題があるときはいつでも、ビューの正しいURLを生成するためにこのURLを使用しなかったためです。
+0

をhttp URL://は間違いなく正しいと相対URLを使用することはありません、違いを作っているように見えていませんそれが相対的なものであるかどうか。 –

0

Adob​​e Reader(またはPDFの仕様自体ではないでしょうか?)では、セキュリティ目的で外部コンテンツを読み込むことはできません。レポートサービスとは関係のない同様の問題(私は動的にPDFを生成し、可変のロゴを使用していて、それらを埋め込まなければならなかった)を覚えています。

0

通常のファイルパス(c:/temp/somefile.bmp)を試しましたか?レポートサービスのローカルレポートは、ディスクからファイルを読み取り、生成されたPDFファイルに埋め込みます。 IISのアプリケーションプールのIDに画像ファイルに対する読み取り権限があることを確認します。

私たちはそれをやっており、私たちのイメージはウェブサイトの下のimgフォルダに置かれ、残りのウェブサイトイメージと共に置かれます。 Server.MapPath(相対パス)を使用して、パスをハードコーディングしないようにします。

ホープこれはPDFを参照に(少なくとも私の理解からの)外部の画像を含有することができません

2

、パラメータをレポートビューアーこのような形式渡すために外部の画像ファイル名を渡します。file:// C:\アプリ\画像\ pic.jpgを。他のものは、通常、展開されたときにうまく動作しません。

+1

あなたは私の問題に対する答えを持っていました。とても簡単。 – celerno

+1

これは受け入れられた答えでなければなりません! –

1

これは私たちのソリューションでした。 WebサーバーはURLとして独自の修飾DNS名を認識しなかったので、C:\ Windows \ System32 \ drivers \ etcフォルダのHostsファイルを編集し、ホスト名をlocalhostとして追加する必要がありました。私たちは、ファイルに追加された行は:

ourserver.ourdomain.com 127.0.0.1

関連する問題