Asp.net MVC3 OutputCache VaryByHeader=未设置Cookie

Asp.net MVC3 OutputCache VaryByHeader=未设置Cookie,asp.net,asp.net-mvc-3,Asp.net,Asp.net Mvc 3,我有以下行动方法: [HttpGet, Authorize, OutputCache(Duration = 60, VaryByHeader = "Cookie", Location = OutputCacheLocation.Any)] public ActionResult Index() 但当我提出请求时,会发布以下标题: Cache-Control: private, max-age=60, s-maxage=0 Content-Type: text/html; charset=utf

我有以下行动方法:

[HttpGet, Authorize, OutputCache(Duration = 60, VaryByHeader = "Cookie", Location = OutputCacheLocation.Any)]
public ActionResult Index()
但当我提出请求时,会发布以下标题:

Cache-Control: private, max-age=60, s-maxage=0
Content-Type: text/html; charset=utf-8
Content-Encoding: gzip
Expires: Fri, 22 Jun 2012 09:56:32 GMT
Last-Modified: Fri, 22 Jun 2012 09:55:32 GMT
Vary: Accept-Encoding
为什么它不在文件中包含Cookie头


我尝试了许多不同的
OutputCache
设置,但都没有效果:(

我讨厌IIS几乎和讨厌ASP.NET一样


因此响应包含在Andrew Bullock链接的url“页面文件名”中,即“iis压缩覆盖不同的标题”

但自2013年12月以来,有一个修补程序可用(可在Andrew Bullock链接上找到)。与往常一样,此修补程序可能包含在常规修补程序中,因此请确保在应用之前您仍然需要它

由于“最佳实践”是从链接明确提供信息,而不是仅提供链接(以防页面下降),因此这里有一个摘要:

IIS动态压缩覆盖
Vary
标题。这似乎适用于包含的从版本5到版本8的IIS(从msdn博客和msdn kb累积信息时)。请禁用IIS动态压缩,或者在需要时尝试应用可用的修补程序。(此问题可能通过windows 8.1/2012 R2系列上的常规修补程序得到修复。热修复程序从IIS 7开始提供,在win7 sp1上进行了个人测试,但尚未在我的服务器上提供。)

在我的具体案例中,我还有另一个问题:asp.net在
outputCache
位置设置为
Client
时,没有发出任何
Variy
标题(是否启用压缩)。将其设置为
下游
“已解决”这是另外一个问题。但当然,这会产生副作用,将
缓存控制
private
更改为
public
(现在可以在代理上缓存,而不仅仅是在客户端浏览器上缓存)