2015-11-23 78 views
0

我无法覆盖cookie的值。用户第一次提交用户名时,cookie会在浏览器中正常存储,并且显示正确。但是,当用户尝试提交不同的用户名时,页面将刷新并且旧的cookie仍然设置。这是我希望可以理解的代码,任何帮助表示赞赏。ASP.NET覆盖cookie

protected void Cookie_Encode(object sender, EventArgs e) 
{ 
     // Encoding username in Base64 
     var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(User_box.Text); 
     string Encoded_user = System.Convert.ToBase64String(plainTextBytes); 

     // Creating and setting the cookie 
     HttpCookie myCookie = new HttpCookie("UserSettings"); 
     myCookie["UserName"] = Encoded_user; 
     myCookie.Expires = DateTime.Now.AddDays(7d); 
     Response.Cookies.Add(myCookie); 

     Response.Redirect(Request.RawUrl); 
} 
+0

尝试设置的路径:'myCookie.Path = “/”;',并使用设定器在'Cookies'集合:'Response.Cookies [ “UserSettings”] =的myCookie;',看看它是否使有区别... – user1429080

回答

1

使用DateTime.Now.AddDays(-1)而不是DateTime.Now.AddDays(7d)

protected void Cookie_Encode(object sender, EventArgs e) 
{ 
    // Encoding username in Base64 
    var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(User_box.Text); 
    string Encoded_user = System.Convert.ToBase64String(plainTextBytes); 

    // Creating and setting the cookie 
    HttpCookie myCookie = new HttpCookie("UserSettings"); 
    myCookie["UserName"] = Encoded_user; 
    myCookie.Expires = DateTime.Now.AddDays(-1); 
    Response.Cookies.Add(myCookie); 

    Response.Redirect(Request.RawUrl); 
}