Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Cookie不允许多个键/值对_C#_Asp.net Mvc_Cookies - Fatal编程技术网

C# Cookie不允许多个键/值对

C# Cookie不允许多个键/值对,c#,asp.net-mvc,cookies,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));

我有一个简单的方案,可以让用户使用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);
    }
受保护的void SetAuthCookie(字符串事件代码,字符串id)
{
SHA1 sha=SHA1.Create();
byte[]data=sha.ComputeHash(Encoding.UTF8.GetBytes(id));
HttpCookie AuthCookie=新的HttpCookie(“mycokie”);
StringBuilder sBuilder=新StringBuilder();
for(int i=0;i
到目前为止,我发现:如果我注释掉“AuthCookie[“eventcode”]=eventcode;”,那么在我的浏览器中,我看到mycokie的值为“id=foo”

同样,如果我注释掉“AuthCookie[“id”]=sBuilder.ToString();”我看到mycokie的值为“eventcode=foo”

我想要的是myookie的值为“eventcode=foo&id=bar”。但是,如果我在浏览器中没有注释掉这两行,我会看到MyCookie没有\empty值。有什么好处

在以前的实现中唯一的区别是我没有处理'id'参数-它已经是一个guid。我认为这是一个加密散列字符串这一事实是一种误导,因为硬编码'foo'作为'id'或'eventcode'的cookie值会导致相同的结果。我可能错了

HttpCookie AuthCookie = new HttpCookie("MyCookie");
AuthCookie.Values["eventcode"] = EventCode;
AuthCookie.Values["id"] = sBuilder.ToString();
AuthCookie.Expires = DateTime.Now.AddDays(1);
Response.Cookies.Add(aCookie);
他说,这应该行得通


我发现Google Chrome在localhost/dev网站上有一些奇怪的问题。可能是这样吗?

我在本地主机上使用chrome,我想你是有钱的。例如,如果我将键“id”更改为“_id”,那么一切都会按照我期望的方式工作。