今天寫個關於http cookie的demo,發現只要vs重新運行後cookie的值就會丟失,代碼如下
protected void Page_Load(object sender, EventArgs e)
{
HttpCookie _userInfoCookies = Request.Cookies["UserName"];
string city;
if (_userInfoCookies != null)
{
city = _userInfoCookies["City"];
Session["location"] = city;
Response.Redirect("Berava.aspx");
}
}
protected void Moveto_Click(object sender, EventArgs e)
{
Session["location"] = worlddrdolist.SelectedItem.Value;
if (CheckBox1.Checked)
{
HttpCookie _userInfoCookies = new HttpCookie("UserName");
_userInfoCookies["City"] = worlddrdolist.SelectedValue.ToString();
Response.Cookies.Add(_userInfoCookies);
}
Response.Redirect("Berava.aspx");
}
最後才發現是因爲沒有設置cookie的過期時間導致(Expire),默認cookie只是在當前會話有效,所以vs重新運行的時候就是一個新的會話,這時cookie就已經失效了,只要將cookie設置一個過期時間就ok了,像下面這樣(有效時間爲一天):
_userInfoCookies.Expires = DateTime.Now.AddDays(1);