我试图弄清楚如何稳健地处理代理身份验证错误(HTTP
407 状态代码)在使用 System.Net.WebClient 类时。
在现场,我们看到很多用户收到了 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 无论如何都在使用系统设置,则似乎是多余的。
任何帮助表示赞赏。
最佳答案
如果代理身份验证使用 BASIC 或 DIGEST,Internet Explorer 不会持久缓存/重用代理身份验证凭据。对于协商/NTLM,将提供默认凭据。
因此,即使 .NET 继承自 IE 设置,您也不会获得对 Basic/Digest 代理身份验证的任何“免费”支持,除非您碰巧在 IE 中运行;您需要提示用户或提供配置屏幕。
Fiddler (www.fiddler2.com) 在“规则”菜单上有“请求代理身份验证”选项,您可以使用它来模拟此场景进行测试。
关于.net - System.Net.WebClient 与代理身份验证 407 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1202708/