显示作为ActionResult(字节数组)返回的图像会导致IE6冻结。

8

Microsoft MVC, C#, IIS, CSS问题。

我在IE6中遇到了以下情况的问题:

我有一个视图,会显示可变数量的图像,每个图像从控制器端作为BinaryResult返回。

然后将这些BinaryResult对象分配给页面中img元素的src属性。

例如,如果我加载一个页面,其中包含N个图像,那么我将进行N个控制器调用以获取这些图像。这些图像只是非常小的缩略图,在一个页面中最多只能有40个缩略图。

这种方法在IE8、IE7中似乎工作得很好。

但是,在IE6中,它只会初始加载。如果我离开页面然后回来,图像加载将导致IE6冻结。(嗯,基本上你可以把它留一个小时,之后它会响应--但是根本没有显示任何图像)。

最初-我默认剥离CSS(认为它是IE6..但是如果我显示不是通过BinaryResult检索的图像,它似乎可以正常工作)。

此外,已调整压缩的IIS服务器设置以及IE6浏览器内存设置。

如果有人遇到类似的问题,真的会非常感激任何帮助。

2个回答

12

不确定问题出在哪里,但可以尝试这个:

public ActionResult Image()
{
    byte[] image = FetchImage();
    return File(image, "image/png"); // adjust content type appropriately
}

而在你的视角中:

<img src="<%= Url.Action("Image") %>" alt="" />

我该如何在详情页模板中显示我从SQL CE数据库返回的字节数组byte[]作为图像?如果在Details ViewResult中保存图像在Session ["photo"]中,那么在我的RenderPhoto方法中正确地显示图像。在RenderPhoto方法中,我编写var array =(byte [])Session ["photo"]; 如果我不将照片传递到Session并尝试<img src = "@ Url.Action(" RenderPhoto",new {photo = Model.Photo }) }"/>什么都不会发生。这里有什么问题? - Leniel Maccaferri
@Leniel Macaferi,没有更多的上下文和代码很难说。也许可以开始一个新的问题? - Darin Dimitrov

0

在控制器中使用此代码:

public FileStreamResult ShowImage()
{
     MemoryStream ms = new MemoryStream();
     //
     // Create Image
     //
     ms.Position = 0;

     return new FileStreamResult(ms, "image/jpeg");
}

这里是 img 标签的代码:

<img src="~/YourController/ShowImage" />

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接