【发布时间】:2012-08-19 20:33:31
【问题描述】:
我正在开发一个使用 WebClient 的应用程序。我有一个扩展基本 WebClient 功能的类:
public class WebClientEx : WebClient
{
private CookieContainer _cookieContainer = new CookieContainer();
protected override WebRequest GetWebRequest(Uri address)
{
WebRequest request = base.GetWebRequest(address);
if (request is HttpWebRequest)
{
(request as HttpWebRequest).CookieContainer = _cookieContainer;
(request as HttpWebRequest).AllowAutoRedirect = true;
(request as HttpWebRequest).Timeout = 10000;
}
return request;
}
}
我使用 WebClientEx 登录站点并请求一些信息。它适用于 4.0 和 4.5,但它不适用于早期版本,例如 3.5、3.0 等。我添加了一些调试代码,在早期版本中它说 cookie 容器中有 0 个 cookie,而 4.0+ 则说有应该是两个 cookie。
所以原因可能是早期版本的 .NET Framework 在 cookie 容器中存储 cookie 存在一些问题。如何解决?
【问题讨论】:
-
您的问题的答案可以在这里找到 - stackoverflow.com/questions/1777221/…
-
任何人都会提供帮助,或者我必须使用更简单的解决方案而不扩展 WebClient?
-
我的测试表明这个类按预期工作。也许您可以多解释一下为什么您认为它不起作用。