无论我在ASP.NET Web API项目中做什么,当我提供文件时,'Cache-control'都设置为'no-cache'。
我使用过IIS,IIS Express和Cassini。在我的动作方法结束时,它总是设置为私有 - 这就是我想要的。但每当我看到实际的响应时,它就是无缓存。
我正在设置ContentDispositionHeaderValue和MediaTypeHeaderValue(到application / pdf)
有什么想法吗?我检查了整个项目,无论在全球范围内我都无法覆盖它。
答案 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,
};
我很震惊,我似乎是少数试图这样做的人之一。