我还没有尝试过,但它具有 Serializable 属性,因此可以使用 .net 二进制序列化来 [反] 序列化,例如 SoapFormatter。
这是您要求的代码片段。
var formatter = new SoapFormatter();
string file = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "cookies.dat");
using (Stream s = File.Create (file))
formatter.Serialize(s, cookies);
...
CookieContainer retrievedCookies = null;
using (Stream s = File.OpenRead (file))
retrievedCookies = (CookieContainer) formatter.Deserialize(s);
查看 msdn 似乎 SoapFormatter 现在在 .net 3.5 中已弃用,它建议您使用 Binaryformatter。在过去,我发现 SoapFormatter 很有用,因为该文件是可读的,这有助于在反序列化失败时进行诊断!这些格式化程序即使在程序集版本中也对版本更改很敏感(因此,如果您使用框架的一个版本进行反序列化,升级框架,那么它可能不会反序列化,不确定),但是如果这变成一个问题。我相信它们主要是为短期持久性/远程处理而设计的,但在这里它们可能对你来说已经足够好了。
新的 DataContractSerializer 似乎无法使用它,所以它已经过时了。
另一种方法是编写一个 CookieContainerData 类以使用 XmlSerializer [反]序列化并在此和 CookieContainer 之间手动转换。