2010-03-01 52 views
2

我想存储使用的东西一个cookie一样访问请求或响应OnUnload()?

Response.Cookies.Set(new HttpCookie("name","value"); 

后,我已经完成了页面的生命周期,所以是有意义的把它放在OnUnload()事件。

但是在这个阶段,RequestResponse已经被卸载了,所以抛出一个null ref异常。

有人有任何脑风暴来解决这个问题吗?

我所能想到的是将它放在OnPreRender(),但我担心这可能太快了。

回答

2

由于Cookie是在HTTP标头中发送的,因此您必须在将任何内容写入响应流之前设置cookie。因此,您必须在页面呈现前设置cookie,因为这是生成响应中发送的代码的原因。

因此,在页面生命周期后添加一个cookie太迟了。你为什么认为在你将cookie添加到页面时有什么不同?由于Cookie是通过HTTP标头发送的,无论您何时运行代码来添加它们,它们都会同时到达浏览器。

+0

它有所不同,因为我想在Cookie中设置的值可能会在生命周期中更改。即Page_Load完成后的一段时间。 – maxp 2010-03-02 10:19:46

+1

如果您希望在Cookie中存储的值由页面中的控件事件(例如按钮单击)更改,那么Page_PreRender将在所有控件事件之后运行时正常工作。 – Guffa 2010-03-02 10:53:56