Output caching for an ApiController (MVC4 Web API)
asp.net-web-api, c#, http-caching, outputcache
Solution
WebAPI does not have any built in support for the `[OutputCache]` attribute. Take a look at this article to see how you could implement this feature yourself.
Problem
I'm trying to cache the output of an ApiController method in Web API. Here's the controller code: ``` public class TestController : ApiController { [OutputCache(Duration = 10, VaryByParam = "none", Location = OutputCacheLocation.Any)] public string Get() { return System.DateTime.Now.ToString(); } } ``` N.B. I'd also tried the OutputCache attribute on the controller itself, as well as several combinations of its parameters. The route is registered in Global.asax: ``` namespace WebApiTest { public class Global : HttpApplication { protected void Application_Start(object sender, EventArgs e) { RouteTable.Routes.MapHttpRoute("default", routeTemplate: "{controller}"); } } } ``` I get a successful response, but it's not cached anywhere: ``` HTTP/1.1 200 OK Cache-Control: no-cache Pragma: no-cache Content-Type: application/xml; charset=utf-8 Expires: -1 Server: Microsoft-IIS/7.5 X-AspNet-Version: 4.0.30319 X-Powered-By: ASP.NET Date: Wed, 18 Jul 2012 17:56:17 GMT Content-Length: 96 <string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">18/07/2012 18:56:17</string> ``` I was not able to find documentation for output caching in Web API. Is this a limitation of the Web API in MVC4 or am I doing something wrong?