2010-07-09 115 views
2

我這樣設置一個cookie在一個頁面:餅乾在ASP.Net

Request.Cookies["lang"].Value = "en-US"; 
Request.Cookies["lang"].Expires = DateTime.Now.AddDays(50); 

在另一頁我嘗試讀取cookie:

string lang = Server.HtmlEncode(Request.Cookies["lang"].Value); 

該Cookie不爲空,但價值是一個空字符串。我究竟做錯了什麼?

回答

10

您應該使用Response.Cookies來設置cookie,Request.Cookies可以讀取客戶端發回的任何cookie。

您問題中的代碼是在Request對象中設置Cookie,而不是Response

+2

另請注意,在響應中設置的Cookie將不會出現在請求中,直到下一頁加載。 – 2010-07-09 19:15:27

+0

謝謝先生。這是答案。 – Arizona1911 2010-07-09 20:15:13

1

客戶端是否啓用cookie?您設置cookie的事實並不意味着客戶端支持它們並將它們發回。

請記住,你正在處理兩個斷開的系統;你的服務器不保持狀態,你對客戶端知之甚少。

+0

有時最簡單的答案就是你經常忘記的答案。甚至沒有想過讓他檢查一下。 – spinon 2010-07-09 19:13:14

+0

在我的瀏覽器中啓用了Cookie。如果我在嘗試在同一頁面上設置cookie後再讀取該cookie,則會返回正確的值。但是如果我在不同的頁面上閱讀它,它會返回一個空字符串。 – Arizona1911 2010-07-09 19:19:02

+0

@ Arizona1911:發生這種情況是因爲您在「請求」而不是「響應」中設置了Cookie。 – LukeH 2010-07-09 19:57:50

1

如果我沒有記錯,我認爲你應該使用響應而不是請求,因爲請求是發送給你的東西。響應是當你想設置回客戶端瀏覽器。

編輯:你在做什麼是修改該特定請求中的cookie,這將有道理爲什麼你沒有看到後續頁面。這不是將它們保存回客戶端。