RDLC外部映像适用于ASP.NET,但不适用于WPF

时间:2017-12-04 13:52:38

标签: wpf rdlc

我在ASP.NET应用程序中有很多RDLC报告,其中许多是动态生成的(手动操作.rdlc XML文件)。

许多人都有外部图片(EnableExternalImages = true,完整的https:// ...图片的url传递给报告作为参数)。

报表和图像在ASP.NET应用程序中正常工作(通过ReportViewer控件)。

我现在正在构建一个WPF应用程序,该应用程序使用相同的代码从.rdlc报告生成PDF文件。

在大多数情况下,报告在ASP.NET和WPF中都能正常工作。两者都使用LocalReport.Render(“PDF”)生成PDF文件。唯一的例外是使用外部图像 - 报告似乎无法在WPF中呈现外部图像。如果我用嵌入的图像替换外部图像,它可以正常工作。 WPF应用程序中的URL绝对正确(如果粘贴到浏览器中,则有效)。

我尝试过http和https,以及“以管理员身份运行” - 结果相同。实际的错误消息通常是无益的,似乎只是一个通用的“错误”消息(“在指定的位置Custom1找不到子报告'Subreport1'。请验证子报告是否有Page 1”。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

卫生署!像往常一样,问题是我自己的愚蠢错误,由于无益的错误信息而变得更糟。

LocalReport.Render(“PDF”,...,out警告)有一个版本,其中包含警告的输出参数,在这种情况下,我给出了故障的确切原因:EnableExternalImages没有按照我的想法设置(测试所有的假设!)(为什么他们不在报告中显示此消息而不是无用的通用消息,这会为我节省很多时间!)。

EnableExternalImages原来是在aspx标记中设置的,而不是在RDLC生成器代码中设置,因此它在ASP.NET中工作但在WPF中不起作用。我现在在代码中设置它,它可以按预期在两个应用程序中工作。

我已经阅读了很多关于外部图像不能用PDF工作的帖子 - 它们在PDF(和Word)中运行得很好,至少使用Microsfot.ReportViewer2015.Runtime v12.0.2.2402。然而,通常不起作用的是在IE中在报告的在线(浏览器中)预览中显示图像 - 它们显示的时间的一半和它们未显示的时间的一半,但它们总是显示在PDF中。