asp.net-mvc-3 - 异步 Controller 输出缓存

标签 asp.net-mvc-3 outputcache asynccontroller

实现 asynchronous controller 时ASP.NET MVC 中的 action,如果我想输出缓存 ActionResult,我应该把 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
        });
    }
}

起初,我假设它会继续 NewsCompleted,因为这是返回 ActionResult 的方法。

然后我意识到 NewsAsyncVaryByParam 关联,因此将属性放在该方法上可能更有意义。

最佳答案

OutputCache 参数用于 void NewsAsync 方法,而不是 ActionResult NewsCompleted 方法。 (通过实验确定)

关于asp.net-mvc-3 - 异步 Controller 输出缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4893964/

相关文章:

c# - 路径 '/' 的 Controller 未找到或未实现 IController

asp.net-mvc-3 - nop commerce automapper 异常,缺少类型映射配置或不受支持的映射

c# - OutputCache Location=客户端似乎没有工作

c# - 无法在 AsyncController 的构造函数中访问 HttpContext 或 Request 对象

asp.net-web-api - ApiController的异步方法——有什么好处?什么时候使用?

html - 从 mvc3 中的模型属性插入时,实际的 html 标记不是 html 实体

asp.net - OutputCache 在持续时间之前过期

IIS7.5 OutputCacheModule 内核缓存 'public' 忽略 URL

asp.net-mvc - AsyncController 如何避免使用 ASP.NET 工作线程?

DisplayAttribute 中的 HTML 标签