饼干在ASP.net
我有以下代码设置一个cookie失去价值。该cookie存在。如果检查,我永远不会通过以下内容:饼干在ASP.net
if (Request.Cookies["localization"] != null && !string.IsNullOrEmpty(Request.Cookies["localization"].Value))
帮助?
检查完成后发回?如果是这样,您应该从Request集合中读取Cookie。
cookies通过将它们添加到Response.Cookies并从Request.Cookies中读回来保存到浏览器中。
添加到Response的cookie只有在页面处于相同请求时才能被读取。
不确定为什么Response.Cookies会删除值,但谢谢。你为我节省了很多时间。 – 2012-12-12 18:19:09
你厌倦了“请求”集合而不是“响应”集合吗?
if (Request.Cookies["localization"] != null && !string.IsNullOrEmpty(Request.Cookies["localization"].Value))
use Response.Cookies.Add(cookie);而不是Response.Cookies.Set(cookie);
试试这个片段 -
string locale = ((DropDownList)this.LoginUser.FindControl("locale"))
.SelectedValue;
HttpCookie myCookie = new HttpCookie("localization");
Response.Cookies.Add(myCookie);
myCookie.Values.Add("locale", locale);
Response.Cookies["localization"].Expires = DateTime.Now.AddYears(1);
&读它 -
if (Request.Cookies["localization"] != null)
{
HttpCookie cookie = Request.Cookies["localization"];
string locale = cookie.Values["locale"].ToString();
}
,如果你在调试模式下编译,打开跟踪有问题的网页,并确保cookie是在请求集合中。在aspx文件的@page指令中设置跟踪。
我有一个类似的问题,我无法在回发中读取cookie。对我来说问题是我检查了cookie的Secure属性为true。据说,当cookie的Secure属性打开时,它只会在连接使用安全套接字层时才会传输cookie。不过,我不确定我是如何第一次在浏览器中看到cookie的,但考虑到我没有通过SSL进行传输,所以不会在回发中看到。无论如何,将cookie.Secure变成false,解决了问题,并在回发时读取了cookie。
对不起,如果这不需要对你的问题做任何事情,我想分享这个,因为我花了一些时间寻找如何解决这个问题。
最有可能的答案是看到this post
当你尝试检查一个cookie的使用Response对象的存在,而不是传请求,ASP.net会自动创建一个cookie。
编辑:作为一个说明,我结束了,因为它们的cookie API编写需要检查的cookie是ASP.NET使得噩梦的存在软件。我最终编写了一个转换过程,该过程从请求中获取cookie并创建我的状态对象。在请求结束时,我将状态对象转换回cookie并将它们填入响应中(如果需要)。这缓解了试图弄清楚cookie是否在响应中,而不是更新它们,避免创建无意义的cookie等。
我想我知道答案。
只需删除<form>
标记中的动作属性即可。
使它看起来像这样:<form id="form1" runat="server">
,而不是这样的:<form id="form1" action="DisplayName.aspx" runat="server">
然后您应该在代码中使用Response.Redirect("DisplayName.aspx");
。
想补充一点,以克里斯Marisic的答案注释,但我没有那个privelage :-(
而且什么克里斯在他的编辑说,大约从请求删除cookie,才能够阅读在回发新创建的cookie值我落得这样做
Private Sub SetPageSize(ByVal pageSize As Integer)
' Set cookie value to pageSize
Dim pageSizeCookie As HttpCookie = New HttpCookie(pageSizeCookieName)
With pageSizeCookie
.Expires = Now.AddYears(100)
.Value = pageSize.ToString
End With
' Add to response to save it
Me.Response.Cookies.Add(pageSizeCookie)
' Add to request so available for postback
Me.Request.Cookies.Remove(pageSizeCookieName)
Me.Request.Cookies.Add(pageSizeCookie)
End Sub
的Request.Cookies.Remove和Request.Cookies.Add线使其在回传工作
使用的LiveHTTPHeaders看cookie是否被送回浏览器。 http s://addons.mozilla.org/en-US/firefox/addon/3829 – 2009-05-27 20:19:00
不要忘记接受问题的答案 – 2010-10-11 22:15:23