レポートに画像を追加しようとしています。 image src urlは IHttpHandler であり、いくつかのクエリ文字列パラメーターを取ります。次に例を示します。
<img src="Image.ashx?item=1234567890&lot=asdf&width=50" alt=""/>
Imageをセルに追加してから、SourceをExternalに設定し、 Valueを次の式に変換します。
="Image.ashx?item="+Fields!ItemID.Value+"&lot="+Fields!LotID.Value+"&width=50"
しかし、レポートを表示すると、画像のhtmlが次のようにレンダリングされます。
<IMG SRC="" />
何が足りないのですか?
更新
Valueを "image.jpg"に設定しても、空のsrc属性がレンダリングされます。違いがあるかどうかはわかりませんが、リモート処理モードのVS 2008ReportViewerコントロールでこれを使用しています。
更新
絶対パス( http:// server/path/to/http/handler )を使用して、レポートデザイナー(VS 2005)に表示する画像を取得できました。ただし、レポートマネージャーのWebサイトには表示されませんでした。外部URLにアクセスできる 無人実行アカウント も設定しました。
職場でサポートしているサイトのユーザーの国に関する情報を表示するSSRSレポートがあります。これは、IISログデータに基づいています。このレポートでは、表の最初の列に、各国の旗の小さな.gifを保持する画像フィールドがあります。上記の質問で説明したのとまったく同じ問題です。外部画像へのパスは、国コードに基づいてレポートのクエリで計算されました。最初に、次のようなものを指すようにURLを設定しました http://www.mystaticcontent。 com/fotwimg/us.gif 米国の旗など。私が得たのは、レポートに表示された赤いXの壊れた画像だけでした。その後、 このMSDNの記事 それが光を放っていました。私にとっての問題について。
これは、レポートを機能させるためにレポートで行ったことです。
私もこの問題を抱えています。
SSRSエラーログとIISサーバーログを確認しました。いくつかの調査結果:
webserver!ReportServer_0-116!14cc!01/09/2012-12:20:29 :: i情報:処理されたレポート。 Report = '/ Path/ReportName'、Stream = '' ui!ReportManager_0-115!7b8!01/09/2012-12:20:29 ::未処理の例外:System.Web.HttpException:ファイルが存在しません。 System.Web.StaticFileHandler.GetFileInfo(String virtualPathWithPathInfo、StringphysicalPath、HttpResponse response)で
at System.Web.StaticFileHandler.ProcessRequestInternal(HttpContext context)at System.Web.DefaultHttpHandler.BeginProcessRequest(HttpContext context、AsyncCallback callback、Object state)atSystem.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication。 System.Web.HttpApplication.ExecuteStep(IExecutionStep step、Boolean&completedSynchronously)のIExecutionStep.Execute()
つまり、(1)SSRSは/Page.aspxをダウンロードします。これは、コンテンツタイプの画像を提供します:image/jpg; (2)SSRSは、これをtempname.aspx.jpgのようなファイル名で一時フォルダーに保存します。 (3)SSRSは、画像をレポートに組み込むためにtempname.aspxを探します。 (4)エラー
コードビハインドで.jpgリクエストを処理することで、これをテストできると思います...残念ながら、現時点ではASPXのスキルを超えています。
私の場合:製品のコードに応じてローカルホストからロードします。
Image.Source = "http:// [〜#〜] localhost [〜#〜]/IMG /" + Fields!CODE.value + ".jpg"
問題:ファイルが拡張子「.png」でアップロードされることがあります。したがって、FileExistsの検証が必要です。
解決策:1)補助テーブルを追加します
PRODUCT_PHOTO_EXTENSION
id(FKはPRODUCTを参照)拡張子(varchar)
2)ストアドプロシージャを作成します。 SQLでFileExists検証を実行し、PRODUCT_PHOTO_EXTENSION.extensionにある拡張子を保存します。
insert into PRODUCT_PHOTO_EXTENSION
SELECT A.id,'.JPG' FROM PRODUCT A LEFT JOIN PRODUCT_PHOTO_EXTENSION AF ON A.id=AF.id WHERE AF.id IS NULL AND Matriz is null and dbo.FileExists('D:\directory\' + code + '.jpg')=1
insert into PRODUCT_PHOTO_EXTENSION
SELECT A.id,'.PNG' FROM PRODUCT A LEFT JOIN PRODUCT_PHOTO_EXTENSION AF ON A.id=AF.id WHERE AF.id IS NULL AND Matriz is null and dbo.FileExists('D:\directory\' + code + '.jpg')=1
3)このフィールドを使用して画像ファイルをロードします。 (SSRS; image.source式)
Iif(Fields!EXTENSION.Value<>"", "http://LOCALHOST/IMG/" & Fields!CODE.Value & Fields!EXTENSION.Value, "" )
4)結果:拡張子に従って画像をロードします。その赤い「x」は避けてください。
それが役に立てば幸い