Как мне кэшировать MVR3 ActionResult, который возвращает Json? - PullRequest
1 голос
/ 05 октября 2011

У меня есть контроллер 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 (внутренняя ошибка сервера). Без этого атрибута он работает просто отлично.

Я делаю что-то не так или есть лучшее предложение, которое я должен использовать в этой ситуации?

Спасибо!

1 Ответ

2 голосов
/ 14 октября 2011

В случае, если у кого-то есть подобная проблема, я выяснил проблему.Я установил значение CacheProfile, которого не было в файле web.config.Я знаю, что у меня не было этого атрибута в моем вопросе, так что ... извините, если возникла путаница.

...