2011-01-05 12 views
10

Fondamentalmente ho un sito web che rende anteprima HTML di alcuni documenti (prevalentemente ufficio). Il frammento di codice HTML risultante è incluso nella pagina restituita dallo stesso sito web, ma le immagini vengono restituiti dal gestore HTTP da un altro sito con i seguenti link:Chrome browser non mostrare le immagini generate dal gestore HTTP

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

Per qualche motivo tutti i browser tranne Chrome (ad esempio IE6/7/8, Firefox, Opera, Safari) mostra tutto bene, tuttavia per queste immagini Chrome mostra l'icona "immagine spezzata". Se scelgo "Apri immagine in una nuova scheda", l'immagine viene mostrata correttamente.

Modifica Ho pensato di aver risolto questo problema, ma a quanto pare con Fiddler attivato funziona correttamente.

ho avuto context.Response = "utf-8" a sinistra in codice, ma la rimozione aveva alcuna differenza.

intestazioni:

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 

Codice:

    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

Il vostro gestore di impostare il corretto tipo di contenuto? –

+1

quali intestazioni il tuo gestore invia la risposta? –

+0

Sei assolutamente positivo che il tuo servizio stia generando le intestazioni corrette? Ho avuto problemi simili prima ed è quasi sempre stato un problema con le intestazioni o il torrente, alcuni browser perdonano alcune cose che gli altri non lo fanno. E presumo che volevi dire "ashx" e non "asxh" :) –

risposta

5

Sono abbastanza sicuro Chrome richiede la lunghezza da impostare per le immagini, in modo da provare aggiungendo l'header Content-Length per la vostra risposta quando si maneggiano l'immagine.

+0

No, ho esattamente lo stesso sistema e non invio nemmeno la lunghezza del contenuto, funziona ancora bene. –

+0

Bene, ho letto le immagini dal database. Forse sovraccarico aggiunge abbastanza ritardo che causa l'abbandono di Chrome. In ogni caso, l'aggiunta di Content-Length ha risolto questo problema. – Arunas

2

Si dovrebbe aggiungere questo:

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

E 'il context.Response.Close(); A Chrome non piace. Sbarazzati di questa linea e tutto andrà bene. Ho combattuto con questo per mesi.

+0

Penso che tu abbia ragione. Ho avuto lo stesso problema con un gestore che serve pdf generici. È scomparso dopo la rimozione dello Chiudi –

+0

Lo stesso qui, ha applicato anche l'intestazione Content-Length ma rimuovendo il metodo Close() lo ha risolto. – Daveloper

+0

Ho avuto il problema e questa era la mia soluzione. Grazie ! – bcolin

Problemi correlati