我有一个测试系统,其中包含一个与wcf服务对话的winforms客户端应用程序,它允许我根据用户选择的标准打印报告。 在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; }
任何帮助都会非常感激!!!
答案 0 :(得分:0)
5年后......
我今天遇到同样的问题,不得不在运行SSRS的服务器上的Reporting Services配置管理器中设置执行帐户。表面上这是必需的,因为SSRS渲染器运行的默认帐户没有权限访问我正在使用的图像。添加具有访问映像权限并重新启动SSRS的域帐户后,我的报告现在正在运行。