5

我们有一个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();
4

1 回答 1

1

您是否尝试过使用 usingreturnImage来“确保”调用 .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();
于 2012-10-09T14:14:30.747 回答