这是不可能的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
在 的ReportViewer报告使用外部图像不被 默认启用。要使用外部图像,您必须在您的代码中设置EnableExternalImages 属性。根据 您的网络配置,您可能需要跳过代理设置 以允许外部图像出现。 您可以将以下设置添加到 Web.config文件以绕过 本地代理。当修改您的 Web.config文件,一定要指定 那是你的网络中使用 代理服务器的名称:
<system.net>
<defaultProxy>
<proxy usesystemdefault = "false" bypassonlocal = "true" proxyaddress = "http://<proxyservername>:80/" />
<defaultProxy>
</system.net>
希望的一个或两个的这些帮助。
杰里
我忘记提及如果您的映像位于本地应用程序中并且您使用Windows身份验证,则可能会遇到Windows身份验证本地失败的常见问题: http://support.microsoft.com/kb/896861 您还应该在您的服务器上登录事件日志以了解任何类型的错误或身份验证失败情况,以帮助您诊断此问题。 Jerry – 2009-08-15 21:13:04
您在本地网站上进行了哪种身份验证?按照我的建议,你是在IE中提取图像还是用Firefox测试?你的事件日志中是否有任何相关的错误? – 2009-08-17 23:58:44
我想我提到的图像在浏览器中显示得很好。另外,生成报告时事件日志中没有任何内容。我很感谢你的建议,但他们似乎都没有解决问题。我同意可能会检索到图像并将其转换为字节数组来显示,但我更愿意避免这种情况,因为这只是本地的问题而不是实际使用。 – 2009-08-19 16:23:36