3

WebImage.Write() 応答を持つ MVC アクションに OutputCache を追加しようとしていますが、追加するとすぐに (期間が 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 に答える