4

埋め込み画像として持っているすべてのレポートの上部にロゴがあります。

これらのレポートは、SSRSWebサービスインターフェイスを介してASP.NetWebアプリに表示されます-すべてかなり標準的なものですが、画像はレンダリングされません-リンク切れが表示されます。

この問題にはいくつかの可能な解決策があり、ConfigurationInfoテーブルでUseSessionCookiesをfalseに設定するなど、いくつかのことを試しました。

私が気付いたのは、消費しているWebアプリの匿名アカウントを最小特権のサービスアカウントから自分のユーザーアカウントに変更すると、画像が正常に表示されることです。

なぜこれが必要なのか理解できず、レポートに埋め込まれた画像を表示できるようにするためにWebアプリのサービスアカウントに必要な特別な権限を理解できません。

誰か助けてもらえますか?

4

2 に答える 2

7

わかりました、問題は解決しました。すこし。この問題は埋め込み画像に限らず、レポート サービス ビューアーを使用していないために発生します。

要約すると:

1) Web アプリケーションがレポート サーバーを呼び出すとき、それは完全に承認されています。Web アプリケーション アカウント (つまり、アプリを実行するサービス アカウント) のみが使用できる SessionID が生成されます。

2) Web アプリは RAW HTML4.0 を画面に出力します。

3) ブラウザは HTML を受け取り、HTML で参照されている画像を取得しようとします。

4) ブラウザーがユーザー アカウントとして実行されている (例: domain\username1)

5) レポート サーバーは次のような要求を受け取ります。

6) URL にリストされている SessionID が domain\username1 に関連付けられていないため、レポート サーバーはそれが存在しないと主張します。

domain\username1 アカウントを使用するようにアプリ ドメインを設定すると、SessionID がたまたまアカウントに関連付けられるため、突然「機能」します。しかし、実際のユーザーがシステムを試すとすぐに、ドメイン\ユーザー名N がアプリ プール アカウントと一致しないため、イメージが見つからないと文句を言います。

この問題の解決策は次のとおりです。

1) Report Viewer コントロールを使用します。これにより、ブラウザーが受信した URL が Web アプリを指すようになり、Web アプリの ID を使用してレポート サーバーから URL を取得できるようになります。

2) Web アプリのコードで、Render 呼び出しから返された HTML4.0 を解析し、すべての画像を取得してキャッシュし、Web アプリによって保存されたキャッシュされた画像を指すように HTML4.0 リンクを書き直してから、ブラウザーに送信します (これが複雑に思われる場合は、シナリオを機能させるため、Report Viewer コントロールを使用します)。

3) MHTML 出力形式の使用を試みることができます。これにより、バイナリ ストリーム以降に画像が埋め込まれた完全に修飾されたレポートが生成されます。この結果、アプリケーション ページ内に埋め込むのは難しくなりますが、克服できないわけではありません。

レポート ビューアーを使用したくないため、2) のバリエーションを使用することにしました。表示しようとしているロゴは、呼び出し元の Web アプリで既にホストされているため、SSRS レポート実行サービスから返された応答の img タグの src 属性を、この場所への URL に置き換えるだけです。

この問題の最善の解決策として提案されているように、レポート ビューアーを使用したくありません。SSRS がセッション情報を使用して、すべてのレポートに表示されるロゴのような単純なものを返さなければならない理由は、私には理解できません....この問題の根底にたどり着くのに何年もかかりましたが、解決策は特にきれいではありません... .

于 2013-04-10T15:20:17.843 に答える
3

これは外部画像ですか?画像を取得するために必要なアクセス許可について説明しているこのMSDNの記事をご覧ください。

レポートがレポートデザイナでプレビューされる場合、プレビューはユーザーの資格情報を使用して画像を表示します。レポートがレポートサーバーで実行されると、レポートサーバーは無人実行アカウントを使用してイメージを取得します。無人実行アカウントが指定されていない場合、画像は資格情報を使用せずに取得されます(匿名ユーザーアカウント)。これらのアカウントのいずれかに画像にアクセスするための十分な権限がない場合、画像はレポートに表示されません。

レポートマネージャーで画像の権限を確認します。

于 2013-03-19T14:35:13.147 に答える