我正在通过嵌入MVC应用程序的aspx页面使用Microsoft.ReportViewer.WebForms版本11。报告是直接从报告查看器呈现为PDF。
问题
我有一个表格,显示外部图像。如果图像的URL是从表达式计算或从数据库中的列设置,则不会显示图像。只有在报告中直接硬编码URL时,图像才会显示。显然这不是一个解决方案,但它显示了报告能够访问URL并呈现图像。
我从呈现报告中得到了这些警告:
图像“LinkedImage”的ImageData无效。详细信息:URI无效:无法确定URI的格式。
图像“LinkedImage”的ImageData属性的值为“”,这不是有效的ImageData。
我尝试过的
我已经仔细检查了生成的URL,它是正确的。我甚至将其点击操作设置为图像的超链接,它可以正确地转到图像。
最初我在表达式中连接URL,但在这样做不起作用后,我让SQL查询构建了整个URL。它仍然无法显示。
我尝试设置标志:
reportViewer.LocalReport.EnableExternalImages = true;
使用 .NET Reflector 生成 PDB 文件,我能够逐步调试报表查看器的代码。值对象上有一个名为“IsExpression”的标志,当报表呈现时会设置为false。我不太了解报表查看器的内部工作原理,因此不知道这是否是一个红色警报。
我已将输出格式更改为HTML,但仍无法显示。图像标记(在Chrome开发者工具中看到)呈现为:
我已经尝试设置每个图像的正确MIMEType值。(感谢Mike Honey的建议)
我已经尝试了AutoSize、Fit、FitProportional和Clip不同的Sizing值。
我修复并完全重新安装了ReportViewer运行时安装程序,使用的是这个安装程序:https://www.microsoft.com/en-gb/download/details.aspx?id=35747
我已经从本地的Visual Studio实例和另一个服务器上的网站(安装了相同的ReportViewer版本)中运行了网站,问题仍然存在。
<img onload="this.fitproportional=true;this.pv=0;this.ph=0;" height="5px" width="1px" src=(unknown)>
我想引起对第4点的注意。是否有一种配置导致ReportViewer代码无法将该值视为表达式?
代码
以下是RDL中的标记:
<Image Name="LinkedImage">
<Source>External</Source>
<Value>=Fields!imageUrl.Value</Value>
<Sizing>FitProportional</Sizing>
<Style>
<Border>
<Style>None</Style>
</Border>
</Style>
</Image>
这里是一个示例URL(示例中已删除主机):
http://---------/images/FEE40608-0457-E511-A17F-00155D145C00/FFE40608-0457-E511-A17F-00155D145C00.jpg
我有什么遗漏吗?谢谢!