远程服务器返回错误:(407)需要代理身份验证

本文关键字:代理 身份验证 服务器 返回 错误 | 更新日期: 2023-09-27 18:02:48

我在。net 3.5中使用这段代码,收到错误"远程服务器返回一个错误:(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中则不行。

WebRequest.DefaultWebProxy.Credentials = CredentialCache.DefaultCredentials;

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

1)替换CredentialCache。DefaultCredentials行

WebRequest.DefaultWebProxy.Credentials = new NetworkCredential(user, password, domain);
2)创建新的代理对象
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并重复上述每个过程。这是示例代码。

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版本之间一定有我不知道的区别。非常感谢。

远程服务器返回错误:(407)需要代理身份验证

把这个添加到config

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

我以前在Visual Studio解决方案中遇到过这个问题。

打开IE。进入工具-> Internet选项。单击"连接"选项卡,然后单击"局域网设置"按钮。取消选中"自动检测设置"

有时重新启动Visual Studio可以解决这个问题。