IE ошибка? Использование IHttpHandler для извлечения изображений из базы данных, получения случайных пустых изображений - PullRequest
0 голосов
/ 22 октября 2010

Я использую ASP.net/C# и пытаюсь создать галерею изображений.Мои изображения хранятся в виде байтовых данных в базе данных, и я использую файл axd, например, getDocument.axd? AttachmentID = X, чтобы установить объект Image, который затем добавляется на страницу aspx при загрузке страницы.

В IE большинство изображений отображается на странице, однако некоторые изображения не отображаются, я получаю изображение красного цвета по умолчанию.Интересно, что когда я просматриваю свойства изображения, у него нет типа файла.Все файлы, которые я извлекаю - это файлы jpg.

Я надеюсь, что кто-то может помочь, потому что это настоящий скребок головы :)

Я должен отметить, что эта проблема не возникает в Firefox / Chrome и всеизображения отображаются правильно.

void IHttpHandler.ProcessRequest(HttpContext context)
    {

        if (context.Request.QueryString["attid"] != null)
        {
            int attid = int.Parse(context.Request.QueryString["attid"]);

            context.Response.Clear();
            context.Response.AddHeader("Content-Length", att.AttachmentData.Length.ToString());
            context.Response.ContentType = att.MimeType.MimeHeader;
            //context.Response.CacheControl = "no-cache";
            context.Response.AddHeader("Content-Disposition", "attachment; filename=" + att.FileName.Replace(" ", "_") + "." + att.MimeType.FileExtension + ";");
            context.Response.OutputStream.Write(att.AttachmentData, 0, att.AttachmentData.Length);
            context.Response.End();

            return;
        }
    }

Чтобы вызвать этот метод, я получаю список идентификаторов из БД и извлекаю соответствующие изображения, выполняя следующие действия:

            foreach (int i in lstImages)
            {
                Image tempImage = new Image();
                Panel pnl = new Panel();
                tempImage.ImageUrl = "getDocument.axd?attid=" + i;
                tempImage.Attributes.Add("onclick", "javascript:populateEditor(" + i + ");");
                tempImage.Height = 100;
                tempImage.Width = 100;
                pnl.Controls.Add(tempImage);
                divImages.Controls.Add(tempImage);
            }

* РЕДАКТИРОВАТЬ * Мой коллега заметил, что некоторые из моих изображений имели странную информацию заголовка, содержащуюся в файле изображения.Мы подозреваем, что это может быть из фотошопа, сохраняющего файлы, поскольку все файлы, которые не были созданы от конкретного человека, кажутся нормально отображаемыми.

1 Ответ

0 голосов
/ 22 октября 2010

Сделав это сам, я никогда не сталкивался с этой проблемой.Это происходит для одного и того же изображения (изображений) или это полуслучайно?

Проверьте, что jpegs можно просматривать в IE нормально (т.е. как исходный файл не через ваш обработчик), проверьте трафик HTTP с помощью fiddlerи проверьте, что выходящий поток хорошо выглядит.

...