2013-11-22 65 views
1

我有一个测试系统,其中包含一个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感激!

+0

我忘了..在报告中我用下面的表达式设置了一个图像控件'=“file:///”&Fields!StartBarcode.Value' – wakthar

+0

当报告被下拉到客户端时,它会要求访问图像。如果在那个时候,在渲染之后,你无法访问资源,那么你会得到一个空白或其他错误。 –

回答

0

5年以后...

我今天有这个同样的问题,不得不Reporting Services配置管理器中建立一个执行帐户,其中SSRS运行在服务器上。表面上这是需要的,因为SSRS渲染器运行的任何默认帐户都没有权限访问我正在使用的映像。添加具有访问映像权限的域帐户并重新启动SSRS后,我的报告正在运行。