ASP.NET rdlc,外部图像不显示PDF格式的图像

前端之家收集整理的这篇文章主要介绍了ASP.NET rdlc,外部图像不显示PDF格式的图像前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用ASP.NET附带的Microsoft ReportViewer,并且有一个报表参数,应该在报表中设置图像的值(路径).我现在提供路径作为完整的URL,从http://开始,但也尝试将其作为应用程序相对路径,站点根路径等等.由于某种原因,图像始终显示为红色X时它导出为PDF.我只是在代码中创建一个控件实例,设置属性并直接导出到响应流,以便进行下载.

我只是不确定图像没有显示出来会出现什么问题,所以如果有任何想法请告诉我.

更新1

我已经确定我可以使用URL嵌入图像,如果它在我的公共Web服务器上,但是当我在localhost中运行时,图像将不会嵌入.我已经确认localhost,如果我将相同的URL粘贴到我的浏览器中,图像将打开正常.据我所知,我没有代理人.所以我可以解决我的问题,但我仍然不明白localhost的问题是什么.

更新2

忘记提到当从浏览器打开图像的URL时它工作正常.

解决方法

PDF不能包含引用外部图像(至少从我的理解中).为了使图像显示在PDF中,必须将其嵌入到文档中.因此,要使用外部图像,您的应用必须检索图像并将其存储在文档中.报告查看器将尝试为您执行此操作.

两个可能的答案:

首先,为了让您的应用将图像打包到PDF中,它必须能够从您指定的URL中检索图像.如果该URL位于代理后面(从应用服务器的角度来看)和/或需要凭据来访问,则这将对报表查看器的默认配置提出质询.

如果代理服务器出现问题,请参阅下面添加的web.config设置.您可能还需要提供网络凭据,以便您的应用可以对代理进行身份验证.有很多方法可以解决这个问题,但最简单的方法之一就是将您的应用程序作为域的服务帐户运行,该帐户有权遍历您的代理.您可以通过临时运行网站来测试这一点(应该是临时的,因为这是一种可怕的安全措施).

您正在使用的图像可能需要凭据才能访问(尝试使用空cookie在Firefox中提取图像并验证是否需要凭据才能访问它).如果它需要Windows身份验证,则代理安全性的相同解决方案可能适用于远程映像上所需的身份验证.如果它需要其他形式的身份验证,您最好下载并将图像嵌入到项目中.

也可以使用代码中的其他方法下载图像,并将其转换为字节数组以包含在报告中.网上有很多这样的例子,包括Stack Overflow here.

其次,看看下面的页面

http://msdn.microsoft.com/en-us/library/ms251715%28VS.80%29.aspx

Using external images in a
ReportViewer report is not enabled by
default. To use an external image,you
must set the EnableExternalImages
property in your code. Depending on
your network configuration,you might
also need to bypass proxy settings to
allow the external image to appear.
You can add the following settings to
the Web.config file to bypass the
local proxy. When modifying your
Web.config file,be sure to specify
the name of the proxy server that is
used in your network:

<system.net>
<defaultProxy>
<proxy usesystemdefault = "false" bypassonlocal = "true" proxyaddress = "http://< proxyservername >:80/" />
<defaultProxy>
</system.net>

希望其中一个或两个都有帮助.

杰瑞

猜你在找的asp.Net相关文章