多个图像处理程序调用导致IE在弹出窗口中挂起

Mit*_*tul 5 c# asp.net internet-explorer image ashx

我们有一个ashx图像处理程序,在过去的几年中表现相当不错,但我们最近注意到IE8IE9中有一些奇怪的间歇性行为.我们有一个图库页面,它作为图像的src属性的一部分多次调用图像处理程序,此页面在弹出窗口中打开.

页面工作正常,但是当窗口快速连续打开和关闭时(在页面上的所有图像都已完成加载之前),它会导致浏览器挂起,随后必须重新启动.

以下是我们的图像处理程序代码的示例,我怀疑当窗口关闭并且浏览器和服务器之间的连接仍在运行并导致它崩溃时,对图像的请求不是"结束".

查看日志有多次尝试通过处理程序获取相同的图像,因此看起来浏览器正在重试,因为它认为它未能完成请求.

我是否可以对处理程序(或客户端代码)进行任何更改,以确保浏览器在窗口关闭后不会继续请求图像,或者这是IE的烘焙复杂性?Safari,Firefox和Chrome可以很好地处理这种行为.

Alos注意:显示图像的页面在网格周围有一个更新面板 - 但我不认为这是相关的.

Response.Clear();
Response.ContentType = "image/jpeg";
System.Drawing.Image returnImage = System.Drawing.Image.FromFile(completeImageFilePath);
using (MemoryStream stream = new MemoryStream())
{
    returnImage.Save(stream, ImageFormat.Jpeg);
    stream.WriteTo(Response.OutputStream);
}
returnImage.Dispose();
if (Response.IsClientConnected)
{
    Response.Flush();
}
Response.End();
Run Code Online (Sandbox Code Playgroud)

bUK*_*eer 1

您是否尝试过使用 using 来returnImage“确保”调用 .dispose() ?

Response.Clear();
Response.ContentType = "image/jpeg";
using (System.Drawing.Image returnImage = System.Drawing.Image.FromFile(completeImageFilePath))
{
    using (MemoryStream stream = new MemoryStream())
    {
        returnImage.Save(stream, ImageFormat.Jpeg);
        stream.WriteTo(Response.OutputStream);
    }
}
if (Response.IsClientConnected)
{
    Response.Flush();
}
Response.End();
Run Code Online (Sandbox Code Playgroud)