是。恕我直言,覆盖GetWebRequest()是WebClient有限功能的最佳解决方案。在我知道此选项之前,我在HttpWebRequest层上编写了许多非常痛苦的代码,因为WebClient几乎(但不是完全)完成了我需要的工作。推导要容易得多。
另一种选择是使用常规WebClient类,但在发出请求之前手动填充cookie头,然后在响应上拉出Set-
cookies头。cookieContainer类上有一些辅助方法,这些方法使创建和解析这些标头更加容易:
cookieContainer.Setcookies()和
cookieContainer.GetcookieHeader()。
我喜欢前一种方法,因为它比第二种方法更容易调用,并且所需的重复代码更少。同样,派生方法对于多种可扩展性方案(例如cookie,代理等)也以相同的方式工作。



