I am trying to implement CacheControl headers from within a ASP.NET Web Api action ( I realise I can do this using other libraries, and in filters/handlers, but want to do some testing first).
I am following a trivial example from a book that looks like:
var response = Request.CreateResponse<IEnumerable<string>>(HttpStatusCode.OK,emails);
response.Headers.CacheControl = new CacheControlHeaderValue();
response.Headers.CacheControl.MaxAge = TimeSpan.FromHours(1);
response.Headers.CacheControl.MustRevalidate = false;
response.Headers.CacheControl.Public = true;
return response;
This code is almost identical to a number of other answers provided on stackoverflow.
However, the web api is not setting cache control header at all! Any ideas?????
When I look at the response in fiddler it looks like the following, as you can the cache-control is set to no-cache.
HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Expires: -1
Server: Microsoft-IIS/7.5
X-AspNet-Version: 4.0.30319
X-MiniProfiler-Ids: ["b7bfde10-e8d3-455d-b40d-2f33eb285023"]
X-Powered-By: ASP.NET
Date: Sat, 25 May 2013 11:54:35 GMT
Content-Length: 24
I have tried changing the maxage, mustrevalidate and public values all to no avail...