c# – 远程服务器返回错误:(407)需要代理验证

前端之家收集整理的这篇文章主要介绍了c# – 远程服务器返回错误:(407)需要代理验证前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在.NET 3.5中使用此代码并收到错误“远程服务器返回错误:(407)需要代理验证.”
  1. using (WebClient client = new WebClient())
  2. {
  3. WebRequest.DefaultWebProxy.Credentials = CredentialCache.DefaultCredentials;
  4.  
  5. try
  6. {
  7. string webPageStr = client.DownloadString(URL);
  8. Console.WriteLine("OK");
  9. }
  10. catch (Exception ex)
  11. {
  12. Console.WriteLine("FAIL");
  13. Console.WriteLine(ex.Message);
  14. }
  15. }

但是,此代码可以在.NET 4.0中顺利运行,因为此行足以传递代理身份验证,而不适用于.NET 3.5.

  1. WebRequest.DefaultWebProxy.Credentials = CredentialCache.DefaultCredentials;

因此,我尝试了许多其他方法解决这个问题,但没有一个工作:

1)用.替换CredentialCache.DefaultCredentials行

  1. WebRequest.DefaultWebProxy.Credentials = new NetworkCredential(user,password,domain);

2)创建新的代理对象

  1. IWebProxy proxy = new WebProxy(proxyUrl,port);
  2. proxy.Credentials = new NetworkCredential(user,pass,domain);
  3. client.Proxy = proxy;
  4. client.Credentials = new NetworkCredential(user,domain);

3)添加此行

  1. client.UseDefaultCredentials = true;

4)使用HttpWebRequest而不是WebClient并重复上面的每个过程.这是示例代码.

  1. HttpWebRequest webRequest = WebRequest.Create(URL) as HttpWebRequest;
  2. webRequest.Proxy = WebRequest.DefaultWebProxy;
  3. webRequest.Credentials = new NetworkCredential(user,domain);
  4. webRequest.Proxy.Credentials = new NetworkCredential(user,domain);
  5.  
  6. try
  7. {
  8. webRequest.GetResponse();
  9. Console.WriteLine("OK");
  10. }
  11. catch (Exception ex)
  12. {
  13. Console.WriteLine("FAIL");
  14. Console.WriteLine(ex.Message);
  15. }

因为我必须使用.NET 3.5,所以我觉得自己走到了尽头.我不知道这两个.NET版本之间必须有区别.非常感谢你提前.

解决方法

只需将此添加到配置
  1. <system.net>
  2. <defaultProxy useDefaultCredentials="true" >
  3. </defaultProxy>
  4. </system.net>

猜你在找的C#相关文章