Cookie保存CartId始终为null

时间:2015-11-14 18:32:56

标签: c# asp.net .net cookies

所以cookie工作但CartID在生成GuID时始终保存为null ...可能我应该添加或更改第3行中的内容。我堆叠请帮助。这是代码:

    public string GetCartId(HttpContextBase context )
    {

        if (context.Request.Cookies["CartId"] == null) return "0";

        string CartId = context.Request.Cookies["CartId"].Value;
        {               

            if (context.Request.Cookies["CartId"] == null)
             {

                CartId = Guid.NewGuid().ToString();

                HttpCookie cookie = new HttpCookie("CartId", CartId);

                cookie.Expires = DateTime.Now.AddDays(1);


                context.Response.Cookies.Add(cookie);

                return CartId.ToString();
              }

            else   
            {

                return context.Request.Cookies["CartId"].Value;
            }



        }

2 个答案:

答案 0 :(得分:1)

有一些奇怪的逻辑在继续。您的第二个if-statement正在执行与第一个相同的检查。但是在第一次你已经返回时,所以代码永远不会出现在第二个。

我重写了你的代码以遵循这个逻辑:

  • 如果cookie不存在,请创建一个新ID并将其存储在cookie中
  • 返回新创建的ID或cookie中存在的ID

在代码中:

public string GetCartId(HttpContextBase context )
{
    string cartId;
    if (context.Request.Cookies["CartId"] == null)
    {
        cartId = Guid.NewGuid().ToString();
        HttpCookie cookie = new HttpCookie("CartId", cartId);
        cookie.Expires = DateTime.Now.AddDays(1);
        context.Response.Cookies.Add(cookie);
    }
    else 
    {
        cartId = context.Request.Cookies["CartId"].Value;
    }
    return cartId;   
}

答案 1 :(得分:0)

HttpCookie c = request.cookies["getcookie"];
If (c == null)
{
c = New httpcookie("getcookie");
Guid g= guid.newguid().tostring();
c.value=g;
Response.cookies.add(c);
Return c.value;
}
else
{
return c.value;
}

希望这是您想要的代码,请忽略我从移动设备输入的区分大小写的原因。 谢谢。