在下一个请求之前更改 cookie 不会影响它 - 如何解决这个问题?

Changing a cookie doesn't affect it until the next Request - how to fix this?

我熟悉 Microsoft 的 "best practices" 来处理 cookie 的生命周期(如 MSDN 上所定义),并且正在关注这些,但发现了一个我需要修复的奇怪场景。我无法想象我是第一个体验到这一点的人,所以想看看社区对此有何看法。

顺便说一句,对于我将要描述的内容,一个明显的解决方法是强制重定向,但由于我不会深入探讨的原因,302 不是一个选项。

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

但是,稍后,代码的一个非常独立的部分尝试重新读取 cookie 并且 - 猜猜是什么 - 它找到了旧值。 注意:这仍然是 SAME 网络请求的一部分,我们尚未return发送给客户端。

当我们return到客户的浏览器时,cookie 被正式删除。

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

想法?

谢谢

格里夫

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