在本地报告上显示图像
问题描述:
我有一个测试系统,其中包含一个winforms客户端应用程序与wcf服务交谈,该服务允许我根据用户选择的标准打印报告。 在wcf方面,我们有几个rdlc文件,我们试图展示一些图像。我们生成图像并将它们保存到磁盘,并将图像的文件路径作为数据源中数据集的一部分。 下面的代码生成图像在本地报告上显示图像
var image = Code128Rendering.MakeBarcodeImage(barcode, 2, true);
var imageFilename = HttpContext.Current.Server.MapPath(string.Format("{0}.bmp", imageId));
image.Save(imageFilename);
要创建我的数据集,我有以下
var rmDS = new List<object>()
{
new TestObj()
{
Barcode = GenerateBarcode(DateTime.Now.Ticks.ToString()),
},
};
return rmSpecialDeliveryService;
我添加了这个报告的数据源。当我尝试呈现报表,我得到以下警告消息
Warning: Images with external URL references will not display if the report is
published to a report server without an UnattendedExecutionAccount or the target
image(s) are not enabled for anonymous access. (rsWarningFetchingExternalImages)
我有渲染的代码如下:
var deviceInfo =
@"<DeviceInfo>
<OutputFormat>EMF</OutputFormat>
<PageWidth>8.5in</PageWidth>
<PageHeight>11in</PageHeight>
<MarginTop>0.25in</MarginTop>
<MarginLeft>0.25in</MarginLeft>
<MarginRight>0.25in</MarginRight>
<MarginBottom>0.25in</MarginBottom>
</DeviceInfo>";
Warning[] warnings;
m_streams = new List<Stream>();
report.Render("Image", deviceInfo, CreateStream, out warnings);
foreach (var stream in m_streams){ stream.Position = 0; }
任何帮助,将greatfully感激!
答
5年以后...
我今天有这个同样的问题,不得不Reporting Services配置管理器中建立一个执行帐户,其中SSRS运行在服务器上。表面上这是需要的,因为SSRS渲染器运行的任何默认帐户都没有权限访问我正在使用的映像。添加具有访问映像权限的域帐户并重新启动SSRS后,我的报告正在运行。
我忘了..在报告中我用下面的表达式设置了一个图像控件'=“file:///”&Fields!StartBarcode.Value' – wakthar
当报告被下拉到客户端时,它会要求访问图像。如果在那个时候,在渲染之后,你无法访问资源,那么你会得到一个空白或其他错误。 –