远程服务器返回错误:(407)需要代理身份验证 [英] The remote server returned error: (407) Proxy Authentication Required

查看:894
本文介绍了远程服务器返回错误:(407)需要代理身份验证的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我将此代码与.NET 3.5结合使用,并收到错误远程服务器返回错误:(407)需要代理身份验证。

I use this code with .NET 3.5 and receive error "The remote server returned an error: (407) Proxy Authentication Required."

using (WebClient client = new WebClient())
{
    WebRequest.DefaultWebProxy.Credentials = CredentialCache.DefaultCredentials;

    try
    {
        string webPageStr = client.DownloadString(URL);
        Console.WriteLine("OK");
    }
    catch (Exception ex)
    {
        Console.WriteLine("FAIL");
        Console.WriteLine(ex.Message);
    }
}

但是,此代码可与.NET 4.0一起顺利使用此行足以通过代理身份验证,而不适用于.NET 3.5。

However, this code works smoothly with .NET 4.0 as this line is sufficient to pass the proxy authentication while it is not for .NET 3.5.

WebRequest.DefaultWebProxy.Credentials = CredentialCache.DefaultCredentials;

因此,我尝试了许多其他方法来解决此问题,但没有一种有效:

Therefore, I tried many other ways to solve this problem but none of them works:

1)将CredentialCache.DefaultCredentials行替换为

1) Replace CredentialCache.DefaultCredentials line with

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

2)创建新的代理对象

2) Create new proxy object

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

3)添加此行

client.UseDefaultCredentials = true;

4)使用HttpWebRequest代替WebClient并重复上述每个过程。这是示例代码。

4) Use HttpWebRequest instead of WebClient and repeat every procedure above. This is sample code.

HttpWebRequest webRequest = WebRequest.Create(URL) as HttpWebRequest;
webRequest.Proxy = WebRequest.DefaultWebProxy;
webRequest.Credentials = new NetworkCredential(user, pass, domain);
webRequest.Proxy.Credentials = new NetworkCredential(user, pass, domain);

try
{
    webRequest.GetResponse();
    Console.WriteLine("OK");
}
catch (Exception ex)
{
    Console.WriteLine("FAIL");
    Console.WriteLine(ex.Message);
}

我觉得自己走到了穷途末路,因为必须使用.NET 3.5。我不知道的这两个.NET版本之间一定有区别。

I feel like I come to a dead end as I have to use .NET 3.5. There must be difference between these two .NET versions that I do not know. Thank you very much in advance.

推荐答案

只需将其添加到配置中

 <system.net>
      <defaultProxy useDefaultCredentials="true" >
      </defaultProxy>
   </system.net>

这篇关于远程服务器返回错误:(407)需要代理身份验证的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆