Output caching for an ApiController (MVC4 Web API)
===

I'm trying to cache the output of an [ApiController][1] method in [MVC4 Web API][2].

Here's the controller code:

    using System.Web.Http;
    using System.Web.Mvc;
    using System.Web.UI;
    
    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:

    using System;
    using System.Web;
    using System.Web.Http;
    using System.Web.Routing;
    
    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?


  [1]: http://msdn.microsoft.com/en-us/library/system.web.http.apicontroller.aspx
  [2]: http://www.asp.net/web-api