使用CookieContainer时注意设置PerDomainCapacity属性值

今天往CookieContainer增加Cookie时发现总是有部分Cookie丢失,调试发现CookieContainer.Count属性值每次为20(实际应为27),于是加断点逐语句调试,最终发现了问题:



如上图所示,调用了23次CookieContainer.Add方法,但CookieContainer.Count属性值增加到20后就停了,观察发现CookieContainer.PerDomainCapacity属性值一直都是20,这个属性是做什么的?查MSDN说明如下:

引用内容 引用内容
获取和设置 CookieContainer 可以在每个域包含的 Cookie 实例数。

OK,修改CookieContainer.PerDomainCapacity属性值,问题解决。

private CookieContainer CookieParse(string str, string domain)
{
    CookieContainer result = new CookieContainer();
    result.PerDomainCapacity = 50;
    string[] arr = str.Replace(" ", "").Split(';');
    for (int i = 0; i < arr.Length; i++)
    {
        int index = arr[i].IndexOf("=");
        if (index != -1)
        {
            Cookie cookie = new Cookie(arr[i].Substring(0, index), arr[i].Substring(index + 1));
            cookie.Domain = domain;
            result.Add(cookie);
        }
    }
    return result;
}


评论: 0 | 引用: 0 | 查看次数: 5099
发表评论
登录后再发表评论!