MVC4 Cache Con-trolling

João P. Bragança

All I want to do is cache something for one day. MVC4 is seriously trolling me today:

public override void ExecuteResult(ControllerContext context)
{
    context.HttpContext.Response.OutputStream.Write(contents, 0, contents.Length);
    context.HttpContext.Response.ContentType = contentType;
    context.HttpContext.Response.Headers.Set("Cache-Control", "public, max-age=86400");
    context.HttpContext.Response.Headers.Set("Expires", DateTime.UtcNow.AddDays(1).ToString("r"));
}

And the response?

Cache-Control:private
Content-Length:30262
Content-Type:image
Date:Tue, 28 May 2013 22:18:07 GMT
Expires:Wed, 29 May 2013 22:18:07 GMT

ARRRRRGH. I don’t know why people who develop on the microsoft default stack put up with crap like this.