ASP.NET не отображает изображение из базы данных в IE8 - PullRequest
2 голосов
/ 14 февраля 2012

Я пытаюсь отобразить изображение из базы данных на веб-странице ASP.NET. Я использую универсальный обработчик, и он отлично работает на Firefox, Chrome и IE9, но не в IE8. Это мой общий код обработчика:

    public void ProcessRequest(HttpContext context)
    {
        byte[] FileContent = null;
        if (context.Request.QueryString["imagen"] != null)
        {
            FileContent = GetImageFromDatabase(context.Request.QueryString["imagen"]);
            context.Response.ContentType = "image/png";
            context.Response.BinaryWrite(FileContent);
        }
    }

И у меня есть изображение в моей разметке страницы asp:

<asp:Image ID="imgInicio" runat="server" Width="100%" AlternateText="Inicio" />

Наконец, я вызываю это на событии загрузки;

imgInicio.ImageUrl = String.Format(@"~/ShowImage.ashx?imagen={0}", idImage);

Я попробовал все это. Любая помощь будет оценена.

Ответы [ 5 ]

1 голос
/ 25 января 2013

У меня были проблемы с изображениями, которые были повреждены в ie8, а не в других браузерах, и оказалось, что мои изображения .jpg были случайно сохранены как CMYK вместо RGB.В Chrome, Safari, Firefox, ie9 проблем не было, только ie8 показал их как сломанные.

1 голос
/ 14 февраля 2012

У вас есть несколько возможностей для устранения этой ситуации:

  • Установите точку останова в ProcessRequest, чтобы выяснить, запрашивает ли IE изображения с сервера

  • Используйте Инструменты разработчика (F12), чтобы узнать, загружены ли изображения на странице, но не отображаются ли они

  • Используйте Инструменты разработчика для изменения параметров совместимости и типа документа (были ли они доступны в IE8?) И посмотрите, влияют ли эти изменения на рендеринг изображения

  • Убедитесь, что изображения действительно сохраняются и используются в качестве .png, когда веб-сервер заявляет, что они являются .png (некоторые браузеры могут быть более восприимчивы к MIME-типам, чем другие)

  • В браузере, который отображает изображения, загрузите изображения на локальный жесткий диск и используйте средство просмотра изображений, чтобы убедиться, что формат изображения действительно png

  • Убедитесь, что проблема не связана с более ранними проблемами альфа-канала и прозрачности IE

0 голосов
/ 24 сентября 2013

У меня была такая же проблема с моим изображением базы данных Internet Explorer 8, но не все остальные браузеры работают.

Я использовал BinaryWrite.Я падаю на страницу теста производительности между BinaryWrite и OutputStream.write.

OutputStream.write - это больше производительности, и будет ли ее использование ... ставить все ваши проблемыЭто поставило мои проблемы на мою сторону.

url: http://www.dotnetperls.com/response-binarywrite

0 голосов
/ 15 февраля 2012

Проблема решена

Я нашел решение.Я не знаю, почему в Internet Explorer 8 нужно указывать формат изображения.Мне пришлось написать код для его форматирования с использованием пространства имен System.Drawing.Я добавил вспомогательный класс со следующими методами:

    public static Image ImageFromBytes(byte[] buffer)
    {
        try
        {
            using (MemoryStream ms = new MemoryStream(buffer))
            {
                return Image.FromStream(ms);
            }
        }
        catch
        {
            return null;
        }
    }
    public static byte[] FormatImage(byte[] buffer, ImageFormat format)
    {
        using (MemoryStream ms = new MemoryStream())
        {
            using (Image img = ImageFromBytes(buffer))
            {
                img.Save(ms, format);
            }
            return ms.ToArray();
        }
    }

И затем я вызываю метод внутри обработчика:

context.Response.BinaryWrite(ImageHelper.FormatImage(FileContent, System.Drawing.Imaging.ImageFormat.Png));

Я думаю, что когда мы конвертируем байты в системуРисункиопределенный.Дело в том, что у меня работает

0 голосов
/ 14 февраля 2012

Начните с выполнения запроса в SQL Server Management Studio - или каким-либо другим способом, который однозначно подтверждает, что данные возвращаются.

Проверьте, действительно ли данные находятся в базе данных?Используете ли вы поле «Изображение» в БД?

Из этого вопроса нечего предположить, что это связано с IE.Если вышеуказанные шаги подтверждают существование и возврат данных, продолжайте, следуя инструкциям devio.

ОБНОВЛЕНИЕ

Для обратной связи это, безусловно, похоже на проблему IE8 (или более раннюю) / PNG.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...