2011-01-05 45 views
10

产生的图像基本上我有一个网站,使一些文档(主要是办公室)的HTML预览。生成的HTML片段包含在同一网站返回的页面,但图像是由HTTP处理程序从其他网站使用以下链接返回:Chrome浏览器不显示通过HTTP处理程序

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

出于某种原因,除了浏览器(如IE6/7的所有浏览器/ 8,Firefox,Opera,Safari)显示一切正常,但对于这些图像Chrome显示“图像损坏”图标。如果我选择“在新选项卡中打开图像”,则图像显示得很好。

编辑我以为我已经解决了这个问题,但显然与小提琴手打开它工作正常。

我不得不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(); 
+1

请问您处理程序设置正确的内容类型? – 2011-01-05 13:57:11

+1

您的处理程序在响应中发送什么标题? – 2011-01-05 13:57:30

+0

您是否绝对肯定您的服务正在生成正确的标题?我以前遇到过类似的问题,而且几乎一直是头文件或流的问题,有些浏览器会原谅其他人不会的东西。我假设你的意思是“ashx的”,而不是“asxh” :) – 2011-01-05 13:58:11

回答

5

我敢肯定,Chrome需要长度的图像进行设置,所以尽量处理时添加Content-Length头给您回应图片。

+0

不,我有完全一样的系统,我不发送任何内容的长度,它仍然运作良好。 – 2011-01-06 17:34:38

+0

嗯,我从数据库中读取图像。也许开销增加了足够的延迟,导致Chrome放弃。无论如何,添加内容长度解决了这个问题。 – Arunas 2011-01-07 14:35:05

2

你应该补充一点:

Response.AddHeader("Content-Disposition", "inline;Filename=\"Picture.gif\""); 
Response.AddHeader("Content-Length", filesize.ToString()); 
4

这是context.Response.Close(); Chrome不喜欢它。摆脱那条线,一切都会很好。我为此奋斗了好几个月。尝试后

+0

我认为你是对的。我与处理普通pdf的处理程序有同样的问题。删除关闭后它消失 – 2011-03-17 15:16:40

+0

同样在这里,也应用了Content-Length标题,但删除了Close()方法修复了它。 – Daveloper 2011-05-12 12:47:55

+0

我有问题,这是我的解决方案。谢谢 ! – bcolin 2013-06-18 13:05:36

相关问题