如何缓存返回Json的MVC3 ActionResult?

时间:2011-10-04 22:00:43

标签: json outputcache actionresult

我有一个控制器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 个答案:

答案 0 :(得分:2)

如果某人遇到类似问题,我会发现问题所在。我将CacheProfile设置为web.config中不存在的值。我知道我的问题中没有设置该属性,所以...抱歉,如果有任何混淆。