创建一个新的cookie(覆盖旧的cookie)会保留一个旧值列表?

时间:2013-05-08 20:45:38

标签: asp.net cookies

编辑:对不起!我忘了包含细节。我在MVC4项目中使用C#。

所以我在这里有一些代码  1.如果已设置UserID参数且尚未设置其中一个,则创建一个新cookie  2.如果尚未设置cookie且未指定UserID参数,请将UserID设置为1  3.如果有新的UserID参数,则使用新的UserID更新cookie。

问题在于,如果首先将UserID设置为Jake,然后设置为Joe,然后设置为Bob,则会获得看起来像这样的Cookie值" Bob,Joe,Jake"。这是正常的吗?似乎最好清除此列表。提前感谢您的时间。

public static void StoreID()
{
    if ((HttpContext.Current.Request.Cookies["UserID"] == null) && (System.Web.HttpContext.Current.Request.Params["UserID"] != null))
    {
        HttpContext.Current.Response.Cookies["UserID"].Value = System.Web.HttpContext.Current.Request.Params["UserID"];
        HttpContext.Current.Response.Cookies["UserID"].Expires = DateTime.Now.AddDays(1);
    }
    else if ((HttpContext.Current.Request.Cookies["UserID"] == null) && (System.Web.HttpContext.Current.Request.Params["UserID"] == null))
    {
        HttpContext.Current.Response.Cookies["UserID"].Value = "1";
        HttpContext.Current.Response.Cookies["UserID"].Expires = DateTime.Now.AddDays(1);
    }
    else if ((HttpContext.Current.Request.Cookies["UserID"] != null) && (System.Web.HttpContext.Current.Request.Params["UserID"] == null))
    {

    }
    else
    {
        HttpContext.Current.Response.Cookies["UserID"].Value = System.Web.HttpContext.Current.Request.Params["UserID"];
        HttpContext.Current.Response.Cookies["UserID"].Expires = DateTime.Now.AddDays(1);
    }
}

1 个答案:

答案 0 :(得分:0)

好的,所以引入子键解决了这个问题。不确定为什么这会像它一样工作 - 如果有人对为什么那么伟大有任何意见!这是工作代码:

if ((HttpContext.Current.Request.Cookies["UserInfo"]== null) && (System.Web.HttpContext.Current.Request.Params["UserID"] != null))
{
    HttpContext.Current.Response.Cookies["UserInfo"]["UserID"] = System.Web.HttpContext.Current.Request.Params["UserID"];
}
else if ((HttpContext.Current.Request.Cookies["UserInfo"] == null) && (System.Web.HttpContext.Current.Request.Params["UserID"] == null))
{
    HttpContext.Current.Response.Cookies["UserInfo"]["UserID"] = "1";
}
else if ((HttpContext.Current.Request.Cookies["UserInfo"] != null) && (System.Web.HttpContext.Current.Request.Params["UserID"] == null))
{

}
else
{
    HttpContext.Current.Response.Cookies["UserInfo"]["UserID"] = System.Web.HttpContext.Current.Request.Params["UserID"];
}