Jar*_*man 7 asp.net reportviewer rdlc
我正在使用ASP.NET附带的Microsoft ReportViewer,并且有一个报表参数,应该在报表中设置图像的值(路径).我现在提供路径作为完整的URL,从http://开始,但也尝试将其作为应用程序相对路径,站点根路径等等.由于某种原因,图像始终显示为红色X时它导出为PDF.我只是在代码中创建一个控件实例,设置属性并直接导出到响应流,以便进行下载.
我只是不确定图像没有出现会出现什么问题,所以如果有任何想法请告诉我.
更新1
我已经确定我可以使用URL嵌入图像,如果它在我的公共Web服务器上,但是当我在localhost中运行时,图像将不会嵌入.我已经确认localhost,如果我将相同的URL粘贴到我的浏览器中,图像将打开正常.据我所知,我没有代理人.所以我可以解决我的问题,但我仍然不明白localhost的问题是什么.
更新2
忘记提到当从浏览器打开图像的URL时它工作正常.
Jer*_*ard 14
PDF不能包含引用外部图像(至少从我的理解中).为了使图像显示在PDF中,必须将其嵌入到文档中.因此,要使用外部图像,您的应用必须检索图像并将其存储在文档中.报告查看器将尝试为您执行此操作.
两个可能的答案:
首先,为了让您的应用将图像打包到PDF中,它必须能够从您指定的URL中检索图像.如果该URL位于代理后面(从应用服务器的角度来看)和/或需要凭据来访问,则这将对报表查看器的默认配置提出质询.
如果问题是代理服务器,请参阅下面添加的web.config设置.您可能还需要提供网络凭据,以便您的应用可以对代理进行身份验证.有很多方法可以解决这个问题,但最简单的方法之一就是将您的应用程序作为域上的服务帐户运行,该帐户有权遍历您的代理.您可以通过暂时运行该站点来测试这一点(应该是临时的,因为这是一种可怕的安全措施).
您正在使用的图像可能需要凭据才能访问(尝试使用空cookie在Firefox中提取图像并验证是否需要凭据才能访问它).如果它需要Windows身份验证,则代理安全性的相同解决方案可能适用于远程映像上所需的身份验证.如果它需要其他形式的身份验证,您最好下载并将图像嵌入到项目中.
也可以使用代码中的其他方法下载图像,并将其转换为字节数组以包含在报告中.有很多在网络上这样的例子,其中包括一个堆栈溢出这里.
其次,看看下面的页面:
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>
Run Code Online (Sandbox Code Playgroud)
希望其中一个或两个都有帮助.
杰瑞
| 归档时间: |
|
| 查看次数: |
17945 次 |
| 最近记录: |