希望这不是重复...
假设我有一个 png 格式的图像,大小约为 300kb,我将它从一个 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 看起来很奇怪......在它看似超时后,萤火虫实际上会显示整个加载的图像......所以在这种情况下,IIS 似乎已经发送了所有内容......
在所有情况下,标头都正确显示了 contentType 和 content-Length。有时请求不会结束,直到我关闭浏览器或从网页中提取图像。然后我可以找到 IIS 向事件日志发送错误消息,说明远程主机关闭了连接。
我似乎无法确定问题所在...
- 编辑 -
改为简单地做一个Response.TransmitFile(filePath),但问题仍然存在。至少在 chrome 中,我认为请求最终会在 90 秒后被浏览器终止。IIS 没有记录任何错误......看起来 IIS 认为它已经完成了它必须做的所有事情......但是在通往浏览器的途中丢失了一些东西......在本地机器上。
我将把系统带到另一台机器上,稍后再进行测试...稍后再尝试更改为 .ashx...