3

我正在尝试将 OutputCache 添加到具有 WebImage.Write() 响应的 MVC 操作中,但是一旦我添加它(即使持续时间为 0),内容类型就会从 image/jpeg 更改为 text/html 并且我获取在浏览器中呈现为文本的图像。

示例代码 - 如果 OutputCache 属性被删除,这将正常工作:

[OutputCache(Duration = 3000)]
public void GetImage(Guid id)
{
    //Create WebImage from byte[] stored in DB
    DbImage image = DbImageDAL.SelectSingle(e => e.DbImageId == id);
    WebImage webimage = new WebImage(image.Data);

    webImage.Write();
    //Tried webImage.Write("JPEG"); but it makes not difference
}
4

1 回答 1

6

OutputCache 覆盖 ContentType。您可以通过从 OutputCacheAttribute 派生一个类来解决此问题,如下所示:

public class ImageOutputCache : OutputCacheAttribute
{
    public override void OnResultExecuting(ResultExecutingContext filterContext)
    {
        base.OnResultExecuting(filterContext);
        filterContext.HttpContext.Response.ContentType = "image/jpeg";
    }
}
于 2013-06-13T14:17:27.810 回答