微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SetCookie是添加新的cookie而不是更新现有的cookie?

如何解决SetCookie是添加新的cookie而不是更新现有的cookie?

对不起,如果我错过了显而易见的事情。我仍在努力学习有关C#的知识。我已经阅读了CookieContainer,CookieCollection和Cookie的文档。我什至在GitHub上查看了源代码。所以我真的在努力。这只是很多信息。

我认为答案在这里的某个地方,但是我真的不知道我在看什么: https://github.com/microsoft/referencesource/blob/f461f1986ca4027720656a0c77bede9963e20b7e/System/net/System/Net/cookiecontainer.cs#L632

所以这是我今天遇到的一个问题...我似乎无法弄清楚为什么SetCookies()为什么要添加一个新的cookie,而不是匹配已经存在的cookie并更新其值。 / p>

我唯一能想到的是,也许是因为第一个cookie是通过CookieCollection添加的,所以它以某种方式隔离在该CookieCollection中?即使GetCookies返回了它?

using System;
using System.Net;
                    
public class Program
{
    public static void Main()
    {
        var ckcol = new CookieCollection();
        ckcol.Add(new Cookie("testcookie","testing","/","example.com"));
        
        var ckcon = new CookieContainer();
        ckcon.Add(ckcol);
        // Returns a single cookie "testcookie=testing"
        ckcon.GetCookies(new Uri("http://example.com/")).Dump();
        
        // Instead of updating the matching cookie...it adds a new one
        ckcon.SetCookies(new Uri("http://example.com/"),"testcookie=CHANGED");
        // Returns two cookies "testcookie=testing" and "testcookie=CHANGED"
        ckcon.GetCookies(new Uri("http://example.com/")).Dump();
        
        // This time it updates the right cookie
        ckcon.SetCookies(new Uri("http://example.com/"),"testcookie=ANOTHER CHANGE");
        // Returns two cookies "testcookie=testing" and "testcookie=ANOTHER CHANGE"
        ckcon.GetCookies(new Uri("http://example.com/")).Dump();
    }
}

当比较cookie的每个属性时,我似乎无法弄清为什么它不起作用?

DotNetfiddle链接https://dotnetfiddle.net/S8AV3E

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。