c# - 远程服务器返回错误 : (407) Proxy Authentication Required

标签 c# .net-3.5 proxy-authentication http-status-code-407

我在 .NET 3.5 中使用此代码并收到错误“远程服务器返回错误:(407) 需要代理身份验证。”

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 版本之间一定有区别。非常感谢您。

最佳答案

只需将其添加到配置中

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

关于c# - 远程服务器返回错误 : (407) Proxy Authentication Required,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23590426/

相关文章:

c# - 为什么 IEnumerable.Count() 的上限为 200?

c# - 在应用程序设置中存储 Dictionary<string,string>

c# - 代理验证错误

java - HttpClient 4 的代理设置不起作用

c# - 同时使用继承和依赖注入(inject)

c# - 如何检测 WPF 中的修饰键状态?

.net-3.5 - AsyncBridge.Net35.0.2.0,等待任务

javascript - 如何处理不正确的代理身份验证凭据

c# - 在 session 或数据库中存储 Viewstate 的陷阱是什么

c# - 使用 COUNT(*) 运行 SQL 查询,以便我们知道有多少记录将通过 DataReader