ASP.NET MVC和IIS - “缓存控制”始终为文件“无缓存”

时间:2013-12-04 14:46:34

标签: asp.net iis cache-control

无论我在ASP.NET Web API项目中做什么,当我提供文件时,'Cache-control'都设置为'no-cache'。

我使用过IIS,IIS Express和Cassini。在我的动作方法结束时,它总是设置为私有 - 这就是我想要的。但每当我看到实际的响应时,它就是无缓存。

我正在设置ContentDispositionHeaderValue和MediaTypeHeaderValue(到application / pdf)

有什么想法吗?我检查了整个项目,无论在全球范围内我都无法覆盖它。

1 个答案:

答案 0 :(得分:1)

在Web API中,您无法使用HttpContext.Current.Headers来修改标题(如果返回POCO对象,则甚至无法执行此操作)。这个电话会有效,但实际上并没有做任何事情。

您必须在构造的响应对象

上实际设置标头
HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);
//IE7/8 Cache value to prevent error
result.Headers.CacheControl = new CacheControlHeaderValue()
{
     Private = true,
};

我很震惊,我似乎是少数试图这样做的人之一。