Cookie不允许多个键/值对

时间:2014-05-28 18:15:16

标签: c# asp.net-mvc cookies

我有一个简单的方案来保持用户使用cookie登录。我希望cookie在完成后包含两个名称值对。我以前使用过这个基本的实现,我不明白为什么它这次不适合我。

    protected void SetAuthCookie(string EventCode, string id)
    {


        SHA1 sha = SHA1.Create();
        byte[] data = sha.ComputeHash(Encoding.UTF8.GetBytes(id));
        HttpCookie AuthCookie = new HttpCookie("MyCookie");
        StringBuilder sBuilder = new StringBuilder();
        for (int i = 0; i < data.Length; i++)
        {
            sBuilder.Append(data[i].ToString("x2"));
        }


        AuthCookie["eventcode"] = EventCode;
        AuthCookie["id"] = sBuilder.ToString();
        Response.Cookies.Add(AuthCookie);
    }

以下是我迄今为止发现的内容:如果我发表评论&#34; AuthCookie [&#34; eventcode&#34;] = EventCode;&#34;然后在我的浏览器中,我看到MyCookie留下了价值&#34; id = foo&#34;。

同样,如果我发表评论&#34; AuthCookie [&#34; id&#34;] = sBuilder.ToString();&#34;我看到MyCookie留下了价值&#34; eventcode = foo&#34;。

我想要的是MyCookie的值为&#34; eventcode = foo&amp; id = bar&#34;。但是,如果我没有留下任何一行注释掉,在我的浏览器中,我看到MyCookie没有空值。是什么给了什么?

之前实施的唯一区别是我还没有处理过&#39; id&#39;参数 - 它已经是一个指导。我认为它是一个加密的哈希字符串的事实是一个红色的鲱鱼,因为硬编码&#39; foo&#39;作为&#39; id&#39;的cookie值的值或者&#39; eventcode&#39;导致相同的结果。我可能错了

1 个答案:

答案 0 :(得分:0)

HttpCookie AuthCookie = new HttpCookie("MyCookie");
AuthCookie.Values["eventcode"] = EventCode;
AuthCookie.Values["id"] = sBuilder.ToString();
AuthCookie.Expires = DateTime.Now.AddDays(1);
Response.Cookies.Add(aCookie);

这应该有用,MSDN

我发现Google Chrome与localhost / dev网站存在一些奇怪的问题。可能是这种情况吗?