У меня есть контроллер ActionResult, который возвращает JSON, который я хотел бы кэшировать. Проведя некоторые исследования, я обнаружил, что атрибут OutputCache может справиться с задачей, но не смог успешно его использовать. Вот вызов метода, на котором я его использую:
[OutputCache(Duration = 86400, VaryByParam = "none")]
public ActionResult GetCategories()
{
var request = (HttpWebRequest)WebRequest.Create(EXTERNAL API CALL);
request.Accept = "application/json; charset=utf-8";
var response = (HttpWebResponse)request.GetResponse();
string result;
using (var sr = new StreamReader(response.GetResponseStream()))
{
result = sr.ReadToEnd();
}
return Json(result);
}
Этот метод выполняет вызов API из внешнего источника, читает результат и затем возвращает результат в виде json для вызова AJAX. При наличии атрибута OutputCacheAttribute вызов ajax возвращает 500 (внутренняя ошибка сервера). Без этого атрибута он работает просто отлично.
Я делаю что-то не так или есть лучшее предложение, которое я должен использовать в этой ситуации?
Спасибо!