在C#Web Api项目中迭代并从.CookieCollection()中提取数据

时间:2015-09-02 13:09:32

标签: c# asp.net cookies asp.net-web-api

我将这个问题与截图重新发布,可能会让我的问题更容易理解。

我有一个填充在HttpWebRequest上的CookieContainer。我正在尝试迭代这些值,然后用下面的代码行接近:

  var getvalue = myWebRequest.CookieContainer.GetCookies(new Uri("https://mydummy.domain.com"));

但是,在cookie集合中列出的4个潜在值中,它总是返回最后一个条目。

有没有人知道我怎么能进入清单,所以我重复一遍并选择我追求的价值?

enter image description here

enter image description here

enter image description here

enter image description here

在最后一张图片中,我在可能的4个条目中的第2个位置有一个条目(在数组位置1处显示)。这就是我想要推出的值JSESSIONID。

1 个答案:

答案 0 :(得分:0)

最终发现这篇文章的一个例子完全符合我的目的:

How can I get all Cookies of a CookieContainer?

示例代码:

public static IEnumerable<Cookie> GetAllCookies(this CookieContainer c)
{
Hashtable k = (Hashtable)c.GetType().GetField("m_domainTable", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(c);
foreach (DictionaryEntry element in k)
{
    SortedList l = (SortedList)element.Value.GetType().GetField("m_list", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(element.Value);
    foreach (var e in l)
    {
        var cl = (CookieCollection)((DictionaryEntry)e).Value;
        foreach (Cookie fc in cl)
        {
            yield return fc;
        }
    }
}
}