2010-03-01 120 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