更改Cookie不会影响它,直到下一个请求 - 如何解决此问题?

时间:2016-03-11 15:15:37

标签: asp.net asp.net-mvc cookies httpmodule

我熟悉微软的最佳实践"用于处理cookie的生命周期(在MSDN上定义),并遵循这些,但发现了我需要修复的奇怪场景。我无法想象我是第一个体验这一点的人,所以想看看社区对此的看法是什么。

顺便说一下,我要描述的一个明显的解决方法是强行重新指导,但由于我不会进入的原因,302不是一个选项。

好的,所以我收到了一个WebRequest,并且我有一个特定的cookie。根据流程,我需要"删除"这个cookie。为此,我将Response Cookie的值设置为null,并将其截止日期设置为去年的某个时间。

然而,稍后,代码的一个非常独立的部分试图重新读取cookie,并猜测 - 它找到了旧的值。 注意:这仍然是SAME网络请求的一部分,我们尚未返回给客户。

当我们返回客户端浏览器时,cookie将被正式删除。

我的一个解决方案是,在网络请求的最开始,我将请求cookie复制到一个单独的NameValueCollection中。

  • 每次更新cookie值时,我都会更新Response.Cookies集合中的cookie,并更新单独的NameValueCollection中的值。
  • 每次删除cookie时,我都会在Response.Cookies集合中使cookie失效,并将其从NameValueCollection中删除
  • 每次添加新cookie时,我都会将它添加到Response.Cookies集合和我的NameValueCollection中。
  • 每当我想读取cookie的值时,我都会从我的NameValueCollection中读取它。

思想?

由于

格里夫

1 个答案:

答案 0 :(得分:0)

我首先检查Resonse.Cookies.AnyKeys是否包含我的Cookie名称。如果是,那么我从Response cookies中读取。如果没有,那么我从请求cookie中读取。