Я использую Microsoft.ReportViewer.WebForms
версию 11 через страницу aspx, встроенную в приложение MVC. Отчет отображается в виде PDF-файла из средства просмотра отчетов.
Задача
У меня есть таблица, которая отображает внешние изображения. Изображения не отображаются, если URL-адрес изображения рассчитывается по выражению или задается из столбца в базе данных. Изображение отображается только в том случае, если я жестко закодировал URL непосредственно в отчете Очевидно, что это не решение, но оно показывает, что отчет может получить доступ к URL-адресу и отобразить изображение.
При выводе отчета я получаю следующие предупреждения:
ImageData для изображения ‘LinkedImage’ недействительно. Подробности: Неверный URI: Не удалось определить формат URI.
Значение свойства ImageData для изображения ‘LinkedImage’ равно «», что недопустимо для ImageData.
Что я пробовал
Я дважды проверил созданный URL, и он правильный. Я даже сделал действие клика гиперссылкой на изображение, и оно корректно переходит на изображение.
Изначально я объединял URL-адрес в выражении, но после того, как это не сработало, SQL-запрос собирал весь URL-адрес. Он по-прежнему не отображается.
Я попытался установить флаг:
reportViewer.LocalReport.EnableExternalImages = true;
Использование .NET Reflector для генерации файлов PDB Мне удалось просмотреть код программы просмотра отчетов. На объекте-значении есть флаг IsExpression, который устанавливается в значение false при отображении отчета. Я не очень разбираюсь во внутренней работе средства просмотра отчетов, поэтому не знаю, красная ли это сельдь.
Я изменил формат вывода на HTML, и он все еще не отображается. Разметка изображения (как видно из инструментов разработчика Chrome) выглядит так:
<img onload="this.fitproportional=true;this.pv=0;this.ph=0;" height="5px" width="1px" src=(unknown)>
Я попытался установить MIMEType на правильное значение для каждого изображения. (Спасибо Майку Хани за предложение)
Я пробовал разные Размеры значения Авторазмер , Fit , FitProportional и Clip .
Я восстановил и полностью переустановил установку среды выполнения ReportViewer с помощью установщика здесь: https://www.microsoft.com/en-gb/download/details.aspx?id=35747
Я запустил веб-сайт из локального экземпляра Visual Studio и развернутой версии на веб-сайте на другом сервере (такая же установленная версия ReportViewer), и проблема сохраняется.
Я хотел бы обратить внимание на номер 4. Может ли существовать конфигурация, из-за которой код ReportViewer не видит значение как выражение?
Код
Вот разметка в RDL:
<Image Name="LinkedImage">
<Source>External</Source>
<Value>=Fields!imageUrl.Value</Value>
<Sizing>FitProportional</Sizing>
<Style>
<Border>
<Style>None</Style>
</Border>
</Style>
</Image>
Вот пример URL (хост удален из примера):
http://---------/images/FEE40608-0457-E511-A17F-00155D145C00/FFE40608-0457-E511-A17F-00155D145C00.jpg
Я что-то упустил? Спасибо!