我有一个ASP MVC应用程序,带有一些看似简单的代码来保存和检索cookie但由于某种原因它们不会持久存在。控制器中的代码是:
if (System.Web.HttpContext.Current.Response.Cookies["CountryPreference"] == null)
{
HttpCookie cookie = new HttpCookie("CountryPreference");
cookie.Value = country;
cookie.Expires = DateTime.Now.AddYears(1);
System.Web.HttpContext.Current.Response.Cookies.Add(cookie);
}
再次加载:
if (System.Web.HttpContext.Current.Request.Cookies["CountryPreference"] != null)
{
System.Web.HttpContext.Current.Request.Cookies["CountryPreference"].Expires = DateTime.Now.AddYears(1);
data.Country = System.Web.HttpContext.Current.Request.Cookies["CountryPreference"].Value;
}
由于某种原因,cookie始终为空?
答案 0 :(得分:94)
问题在于以下代码:
if (System.Web.HttpContext.Current.Response.Cookies["CountryPreference"] == null)
当您尝试使用Response对象而不是Request检查cookie的存在时,ASP.net会自动创建一个cookie。
如果链接再次关闭,请从文章中引用....
简短的解释,如果你不这样做 喜欢阅读整个故事
如果使用“if”之类的代码 (Response.Cookies [“mycookie”]!= null) {...}“,ASP.Net自动 生成一个名为的新cookie “mycookie”在后台和 覆盖你的旧饼干!一直用 要读取的Request.Cookies-Collection 饼干!
答案 1 :(得分:2)
在简历中,请勿使用“回复”来阅读Cookie,请使用“请求”。