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";
}
}