2010-08-04 40 views
5

在页面加载中,如果您执行Response.Cookies.Add(...,立即在下一行中,您可以通过Request.Cookies访问该cookie(...为什么在设置使用Response之后Cookie立即可用于请求?

我知道在封面下,cookie被添加到Request.Cookies by .net,但原始请求从未拥有该cookie。

如果我说的是正确的,为什么这样呢?不应该在下面的请求中提供cookie吗?不应该直接访问Request.Cookies(...是空的?)

回答

6

你是对的,ASP.NET在幕后做了这样的事情:

后您使用 HttpResponse.Cookies集合添加一个cookie,该 饼干是 HttpRequest.Cookies收集立即可用,即使 如果响应尚未发送到 客户端。

- HttpRequest.Cookies page MSDN上

为什么会这样呢?有人猜测,这是因为这就是开发人员期望它的工作原理。

+0

作为一个说明,这是一个关于PHP的常见抱怨...使用'setcookie'不会将所述cookie添加到'$ _COOKIE'全局。 – Powerlord 2010-08-04 17:09:03

+1

其实这一直让我疯狂。我需要过期一个cookie并添加一个新的cookie,但是这种行为意味着我不仅要过期而且还要过期新的cookie。不,我不认为这是一个公平的评论,建议开发者期望它以这种方式工作。我是一名开发人员,在编写代码时尽量避免产生副作用。但是,是的,链接到文档非常宝贵,谢谢。 – 2012-05-16 04:30:23

相关问题