我正在尝试强化使用System.Net.WebClient类时处理代理身份验证错误(HTTP 407状态代码)的方法。
在实际操作中,我们经常看到许多用户收到407代理身份验证WebException,但我不确定一个好的默认策略是什么。在 .Net 2.0/3.5 中,代理身份验证设置应该从Internet Explorer系统设置继承。Firefox、Opera和Chrome也使用这些相同的设置。
这是我们正在使用的基本代码:
using System.Net;
string url = "http://www.mysite.com";
WebClient webClient = new WebClient();
byte[] data = webClient.DownloadFile(url);
当这段代码失败时,我们会打开用户浏览器并将其发送到帮助页面。根据我们的网络日志,我们知道这些客户可以在浏览器中成功连接。也许他们在进入我们的帮助页面之前手动输入了代理用户名和密码?我们不知道。
看起来我们可以使用WebClient.UseDefaultCredentials,但是如果WebClient已经使用系统设置,这似乎是多余的。
任何帮助都感激不尽。
string url = "http://www.java.com/"; webClient = new WebClient(); CredentialCache cache = new CredentialCache(); cache.Add(new Uri(url), "Basic", new NetworkCredential("1", "1")); webClient.Proxy.Credentials = credentialCache; webClient.Credentials = credentialCache; string contents = webClient.DownloadString(url);
- Daniel