在多个 HttpWebRequest 中使用相同的 CookieContainer 是否安全?

2024-03-08

我正在做一种 WebCrawler,我需要在请求之间保留 Cookie 状态。

我异步下载所有页面,创建新的 HttpWebRequest 实例,但设置相同的 CookieContainer。页面可以写入和读取cookie。

我可以安全地做吗?有没有任何替代方案不是 CookieContainer 的子类并在所有方法上加锁?

MSDN 说这个类不是线程安全的,但实际上,我可以这样做吗?


根据文档 http://msdn.microsoft.com/en-us/library/system.net.cookiecontainer.aspx:

此类型的任何公共静态(在 Visual Basic 中为共享)成员都是 线程安全。不保证任何实例成员都是线程 安全的。

因此,如果您想在多个线程之间共享同一个实例,您应该确保正确的锁定。但自从成员CookieContainer类实际上不是由您的代码操纵的,而是隐式地从您创建的不同 HttpWebRequest 实例中进行操作,因此很难正确同步,当然除了锁定您的请求之外,这当然会破坏并行性的目的和级别我想你正试图在这里实现目标。

在实践中是否会遇到问题是另一个话题。问题是文档(以及作者)不向您提供任何保证。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在多个 HttpWebRequest 中使用相同的 CookieContainer 是否安全? 的相关文章

随机推荐