Браузер Chrome не показывает изображения, сгенерированные обработчиком HTTP - PullRequest
10 голосов
/ 05 января 2011

В основном у меня есть веб-сайт, который отображает HTML-просмотр некоторых документов (в основном офисных). Полученный фрагмент HTML включается в страницу, возвращаемую тем же веб-сайтом, однако изображения возвращаются обработчиком HTTP с другого сайта со следующими ссылками:

<img width="50" height="50" src="http://portal/Service/GetFile.asxh?id=123&inline=true">

По какой-то причине все браузеры, кроме Chrome (например, IE6 / 7/8, Firefox, Opera, Safari), показывают все просто отлично, однако для этих изображений в Chrome отображается значок «неработающее изображение». Если я выберу «Открыть изображение в новой вкладке», то изображение будет отображаться очень хорошо.

Редактировать Я думал, что решил эту проблему, но, видимо, с включенным Fiddler работает нормально.

У меня в коде остался context.Response = "utf-8", но его удаление не имело никакого значения.

Заголовки:

HTTP/1.1 200 OK
Date: Wed, 05 Jan 2011 14:26:57 GMT
Server: Microsoft-IIS/6.0
MicrosoftOfficeWebServer: 5.0_Pub
X-Powered-By: ASP.NET
X-AspNet-Version: 4.0.30319
Transfer-Encoding: chunked
Cache-Control: no-cache
Pragma: no-cache
Expires: -1
Content-Type: image/jpeg

Код:

                    context.Response.ContentType = file.ContentType;

                    context.Response.Cache.SetCacheability(HttpCacheability.NoCache);

                    byte[] buff = new byte[BuffSize];
                    using (var stream = repository.GetFileContentsAsStream(file.ContentId))
                    {
                        int bytesRead;
                        do
                        {
                            bytesRead = stream.Read(buff, 0, BuffSize);
                            if (bytesRead > 0)
                            {
                                context.Response.OutputStream.Write(buff, 0, bytesRead);
                            }
                        } while (bytesRead > 0);
                    }

                    context.Response.Flush();
                    context.Response.Close();

Ответы [ 4 ]

5 голосов
/ 06 января 2011

Я уверен, что Chrome требует, чтобы длина была установлена ​​для изображений, поэтому попробуйте добавить заголовок Content-Length к вашему ответу при обработке изображения.

4 голосов
/ 17 марта 2011

Это контекст.Response.Close (); Хрому это не нравится. Избавьтесь от этой линии, и все будет хорошо. Я боролся с этим в течение нескольких месяцев.

2 голосов
/ 06 января 2011

Вы должны добавить это:

Response.AddHeader("Content-Disposition", "inline;Filename=\"Picture.gif\"");
Response.AddHeader("Content-Length", filesize.ToString());
0 голосов
/ 14 ноября 2015

https://en.wikipedia.org/wiki/Comparison_of_web_browsers#Image_format_support

Моя проблема после попытки всего вышеперечисленного состояла в том, что Chrome среди других не поддерживает мой тип изображения.Tiff не поддерживается Chrome.

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