2011-10-04 51 views
1

我有一個控制器ActionResult,它返回我想要緩存的JSON。在做了一些研究後,我發現OutputCache屬性可以做到這一點,但一直未能成功使用它。下面是我使用它的方法調用:如何緩存返回Json的MVC3 ActionResult?

[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(內部服務器錯誤)。沒有這個屬性,它工作得很好。

我做錯了什麼,還是有更好的建議,我應該用這種情況?

謝謝!

回答

2

如果有人有類似的問題,我找出了問題。我將CacheProfile設置爲web.config中不存在的值。我知道我沒有在我的問題中設置該屬性,所以......如果有任何混淆,抱歉。

+1

沒關係,+1。我有*正是*這個問題與返回一個圖像的控制器方法。 CachProfile是默認值,並且緩存控件未在web.config中使用。你指出了正確的方法。 –