2011-02-04 9 views
3

ASP.NET MVCでasynchronous controllerアクションを実装するときに、ActionResultをキャッシュに出力するには、どのメソッドをOutputCache属性に設定しますか?まずAsyncController OutputCache

public class PortalController : AsyncController { 
    /// HERE...? 
    [OutputCache(Duration = 60 * 30 /* 30min */, VaryByParam = "city")] 
    public void NewsAsync(string city) { 

     AsyncManager.OutstandingOperations.Increment(); 
     NewsService newsService = new NewsService(); 
     newsService.GetHeadlinesCompleted += (sender, e) => 
     { 
      AsyncManager.Parameters["headlines"] = e.Value; 
      AsyncManager.OutstandingOperations.Decrement(); 
     }; 
     newsService.GetHeadlinesAsync(city); 
    } 

    /// ...OR HERE? 
    [OutputCache(Duration = 60 * 30 /* 30min */, VaryByParam = "city")] 
    public ActionResult NewsCompleted(string[] headlines) { 
     return View("News", new ViewStringModel 
     { 
      NewsHeadlines = headlines 
     }); 
    } 
} 

、私はそれがActionResultを返すメソッドであるので、それは、NewsCompletedに行くだろうと想定。

次に、私はNewsAsyncVaryByParamに関連付けられていることに気がついたので、おそらくそのメソッドにその属性を入れる方が意味があります。

答えて

6

OutputCacheパラメータはvoid NewsAsyncメソッドになりますが、ActionResult NewsCompletedメソッドには適用されません。 (実験により決定)

関連する問題