c# static class 中处理 cookie 的问题
issues in c# static class to deal with cookies
我想创建一个静态 class 来处理我的 ASP.NET 站点中的 cookie。
class 是用 c# 编写的,位于 App_code 文件夹中。
我遇到的问题是,cookie 中的更新总是删除我以前在 cookie 中的值,而不是添加。
我创建了一个简单的代码。
起初 cookie 的值为 1=a ,这很好(正确)。
但是在第二个 运行 中,当我输入 if 而不是 else 时,cookie 值是 2=b.
我要的结果是1=a&2=b
谢谢
让我试着解释一下发生了什么。当您像这样 HttpContext.Current.Response.Cookies["test2"].Values.Add("1", "a");
设置 cookie 集合的值 "test2" 时,您正在发送一个新的 cookie 集合对象作为新 HTTP 响应流的一部分。新的 HTTP Response 对象对之前设置的 Name/Value cookie 项一无所知(现在可以通过 HTTP 的 Request 对象访问)。
要解决这个问题,只需将请求对象中的 cookie 添加到 Response 对象中的新 cookie 集合中。
if (Request.Cookies["Whosebug"] != null)
{
Response.Cookies["Whosebug"].Values.Add(Request.Cookies["Whosebug"].Values);
Response.Cookies["Whosebug"].Values.Add("2", "bbbb");
}
else
{
Response.Cookies["Whosebug"]["1"] = "aaaaaa";
}
我想创建一个静态 class 来处理我的 ASP.NET 站点中的 cookie。 class 是用 c# 编写的,位于 App_code 文件夹中。
我遇到的问题是,cookie 中的更新总是删除我以前在 cookie 中的值,而不是添加。 我创建了一个简单的代码。
起初 cookie 的值为 1=a ,这很好(正确)。 但是在第二个 运行 中,当我输入 if 而不是 else 时,cookie 值是 2=b.
我要的结果是1=a&2=b
谢谢
让我试着解释一下发生了什么。当您像这样 HttpContext.Current.Response.Cookies["test2"].Values.Add("1", "a");
设置 cookie 集合的值 "test2" 时,您正在发送一个新的 cookie 集合对象作为新 HTTP 响应流的一部分。新的 HTTP Response 对象对之前设置的 Name/Value cookie 项一无所知(现在可以通过 HTTP 的 Request 对象访问)。
要解决这个问题,只需将请求对象中的 cookie 添加到 Response 对象中的新 cookie 集合中。
if (Request.Cookies["Whosebug"] != null)
{
Response.Cookies["Whosebug"].Values.Add(Request.Cookies["Whosebug"].Values);
Response.Cookies["Whosebug"].Values.Add("2", "bbbb");
}
else
{
Response.Cookies["Whosebug"]["1"] = "aaaaaa";
}