基本的に私はいくつかのドキュメント(主にオフィス)のHTMLプレビューをレンダリングするウェブサイトを持っています。クロムを除くすべてのブラウザ(例えばIE6/7は、いくつかの理由についてChromeブラウザでHTTPハンドラで生成された画像が表示されない
<img width="50" height="50" src="http://portal/Service/GetFile.asxh?id=123&inline=true">
:結果のHTML断片は、しかし、画像は以下のリンクで他のサイトからのHTTPハンドラによって返され、同じWebサイトから返されるページに含まれています/ 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();
ハンドラは正しいコンテンツタイプを設定していますか? –
あなたのハンドラはどのヘッダをレスポンスに送りますか? –
あなたのサービスが正しいヘッダーを生成していることは絶対に肯定的ですか?私は以前も同様の問題を抱えていました。ほとんどの場合、ヘッダーやストリームに問題がありました。一部のブラウザは、他の人がしていないことを許しています。そして、私はあなたが "ashx"ではなく "ashx"を意味すると仮定します:) –