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



我们有一个ashx图像处理程序,它在过去几年中表现相当不错,但我们最近注意到IE8IE 9中存在一些奇怪的间歇性行为。我们有一个库页面,它多次调用图像处理程序作为图像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();

您是否尝试过将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();

最新更新