これが重複していないことを願っています...
サイズが約 300kb の png 形式の画像があり、次のような aspx ファイルからクライアントに送信するとします。
Bitmap img = new Bitmap(filepath);
using(MemoryStream ms = new MemoryStream())
{
img.save(ms, ImageFormat.Png);
Response.ContenType="image/png";
ms.WriteTo(Response.OutputStream);
}
img.Dispose();
クライアント側の JavaScript では、単純に次のようになります。
var img = new Image();
img.src = xxx.aspx?param=semething;
これは通常はうまくいきます...しかし、時折、応答が短くなることがあります。Chrome はタイムアウトになるまでリクエストを待ちます。Firebug では、[Net] タブの [Images] ビューに、リクエストが実際に次のように表示されます。
Get xxx.aspx?param=something hostUrl 0(14.7mb) 127.0.0.1:80
その14.7MBはかなり奇妙に見えます...一見タイムアウトした後、firebugは実際には読み込まれた画像全体を表示します..したがって、IISはこの場合すべてを送信したようです...
いずれの場合も、ヘッダーは contentType と content-Length を正しく表示しています。ブラウザーを閉じるか、Web ページから画像を取得するまで、要求が終了しない場合があります。次に、リモート ホストが接続を閉じたことを示すエラー メッセージをイベント ログに送信している IIS を見つけることができます。
私は問題を特定することができないようです...
- 編集 -
単純に Response.TransmitFile(filePath) を実行するように変更しましたが、問題はまだ残っています。少なくともクロムでは、リクエストは最終的に90秒後にブラウザによって終了されると思います。IIS はエラーをログに記録しませんでした... IIS は、必要な処理をすべて完了したと考えているようですが、ローカル マシンでブラウザにアクセスする途中で何かが見つかりませんでした。
システムを別のマシンに持ってきて、後でテストします...また、後で.ashxに変更してみてください...