我有以下代码设置cookie:
string locale = ((DropDownList)this.LoginUser.FindControl("locale")).SelectedValue; HttpCookie cookie = new HttpCookie("localization",locale); cookie.Expires= DateTime.Now.AddYears(1); Response.Cookies.Set(cookie);
但是,当我尝试读取cookie时,Value为Null.cookie存在.如果检查我永远不会超过以下:
if (Request.Cookies["localization"] != null && !string.IsNullOrEmpty(Request.Cookies["localization"].Value))
救命?
检查是在回复后完成的吗?如果是这样,您应该从Request集合中读取cookie.
通过将cookie添加到Response.Cookies并将其从Request.Cookies读回来将cookie保留到浏览器.
添加到Response的cookie只有在页面位于同一请求时才能读取.
最有可能的答案可以在这篇文章中找到
当您尝试使用Response对象而不是Reqest检查cookie的存在时,ASP.net会自动创建一个cookie.
编辑:作为一个注释,我最终编写的软件需要检查ASP.NET是否因为他们的cookie API而成为一场噩梦.我最终编写了一个转换过程,该过程从请求中获取cookie并生成我的状态对象.在请求结束时,我将我的状态对象转换回cookie并将其填充到响应中(如果需要).这减轻了试图找出cookie是否在响应中,更新它们,避免创建无意义的cookie等.