這是不可能的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