您可以使用反射来获取相关的所有Uri
一切都饼干,然后创建新CookieContainer
并将它们添加到它,也许如这里:
public static CookieContainer DeepClone(CookieContainer src)
{
CookieContainer cookieContainer = new CookieContainer();
Hashtable table = (Hashtable)src.GetType().InvokeMember("m_domainTable", BindingFlags.NonPublic | BindingFlags.GetField | BindingFlags.Instance, null, src, new object[] { });
foreach (var tableKey in table.Keys)
{
String str_tableKey = (string)tableKey;
if (str_tableKey[0] == '.')
str_tableKey = str_tableKey.Substring(1);
SortedList list = (SortedList)table[tableKey].GetType().InvokeMember("m_list", BindingFlags.NonPublic | BindingFlags.GetField | BindingFlags.Instance, null, table[tableKey], new object[] { });
foreach (var listKey in list.Keys)
{
String url = "https://" + str_tableKey + (string)listKey;
CookieCollection collection = src.GetCookies(new Uri(url));
foreach (Cookie c in collection)
cookieContainer.Add(new Cookie(c.Name, c.Value, c.Path, c.Domain)
{
Comment = c.Comment,
CommentUri = c.CommentUri,
Discard = c.Discard,
Expired = c.Expired,
Expires = c.Expires,
HttpOnly = c.HttpOnly,
Port = c.Port,
Secure = c.Secure,
Version = c.Version
});
}
}
return cookieContainer;
}
您是否看过使用Reflector或DotPeak的源代码?我相信CookieContainer是线程安全的,我已经使用过很多次,共享单个CookieContainer的许多Web服务请求,我从来没有遇到任何问题。 –
我做了,我仍然需要能够复制它的序列化。 –
http://stackoverflow.com/questions/15983166/how-can-i-get-all-cookies-of-a-cookiecontainer 我认为这符合您的要求。 –