多重图像处理程序调用IE造成的弹出窗口挂(Multiple image handler calls

2019-09-23 18:10发布

我们已经在过去几年进行得相当好一个ASHX图像处理程序,但我们注意到最近在IE8IE9的一些奇怪的间歇行为。 我们有作为图像的src属性的一部分,这个页面是在弹出窗口中打开它调用图像处理程序多次画廊页。

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

以下是我们的图像处理程序代码的样本,我有一个怀疑,请求图像不“结束”时,关闭窗口,浏览器和服务器之间的连接仍然在运行,并导致其崩溃。

在日志中寻找有多次尝试通过处理程序,以便它看起来像浏览器正在重试 ,因为它认为它未能完成请求,以获得相同的图像。

是否有任何变化,我可以作出的处理程序(或客户端代码),以确保浏览器在窗口关闭后不会继续请求图像,或者这是一个烤入IE的复杂性? Safari浏览器,Firefox和Chrome处理此类行为的罚款。

阿洛斯注:显示图像的页面有网格围绕更新面板 - 但我不认为这是相关的。

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();

Answer 1:

您是否尝试过一个包裹周围使用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();


文章来源: Multiple image handler calls causing IE to hang in pop-up window