输出缓存无法使用cookie

时间:2015-11-19 09:49:24

标签: asp.net cookies outputcache

昨天关于asp.net的输出缓存(webforms)有一个奇怪的问题。我们使用页面级缓存(不是部分缓存)用于多语言站点(语言是通过查询字符串键确定的),出于某种目的,缓存停止了对某些语言的工作。我跟踪Global.asax文件的GetVaryByCustomString方法,但它没有用。我将在答案中提供更多细节......

2 个答案:

答案 0 :(得分:1)

也许您需要将Cookie上的Shareable属性设置为true?

  

如果给定的HttpResponse包含一个或多个出站cookie   Shareable设置为false(默认值),输出缓存将是   因为回应受到压制。这可以防止包含的cookie   可能敏感的信息被缓存在响应中   并发送给多个客户。允许包含cookie的响应   要缓存,请为响应正常配置缓存,例如   使用OutputCache指令或MVC的[OutputCache]属性,和   设置所有出站cookie以将Shareable设置为true。

https://msdn.microsoft.com/en-us/library/system.web.httpcookie.shareable(v=vs.110).aspx

答案 1 :(得分:0)

感谢颠覆,我跟踪了最近的提交。我们建立了一种机制,允许特定用户使用cookie而不是会话变量来查看尚未发布的语言。这是问题的原因。如果请求使用的语言不是默认语言,则此机制会检查是否应允许用户查看页面。恕我直言,如果你修改响应的cookie集合,asp.net会禁用该请求的outputcache。我测试了它,如果你向响应添加一个cookie,它确实会禁用缓存。