加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – Chrome浏览器不显示HTTP处理程序生成的图像

发布时间:2020-12-15 20:09:37 所属栏目:asp.Net 来源:网络整理
导读:基本上我有一个网站,呈现一些文件(主要是办公室)的 HTML预览.所产生的 HTML片段包含在同一网站返回的页面中,但是HTTP处理程序通过以下链接从另一个站点返回图像: img width="50" height="50" src="http://portal/Service/GetFile.asxh?id=123inline=true"
基本上我有一个网站,呈现一些文件(主要是办公室)的 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,BuffSize);
                            if (bytesRead > 0)
                            {
                                context.Response.OutputStream.Write(buff,bytesRead);
                            }
                        } while (bytesRead > 0);
                    }

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

解决方法

我确信Chrome需要为图像设置长度,因此在处理图像时,请尝试将Content-Length标题添加到响应中.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读