MVC WebImage OutputCache приводит к типу содержимого text/html

Я пытаюсь добавить OutputCache к действию MVC, которое имеет ответ WebImage.Write(), но как только я добавляю его (даже с длительностью 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
}

1 ответ

Решение

OutputCache переопределяет ContentType. Вы можете исправить это, получив класс из OutputCacheAttribute следующим образом:

public class ImageOutputCache : OutputCacheAttribute
{
    public override void OnResultExecuting(ResultExecutingContext filterContext)
    {
        base.OnResultExecuting(filterContext);
        filterContext.HttpContext.Response.ContentType = "image/jpeg";
    }
}
Другие вопросы по тегам