HttpWebRequest代理验证域用户&凭证(错误407)

时间:2015-11-09 08:30:32

标签: c# wpf httpwebrequest credentials

我在公司网络中。在此网络我无法通过IP ping 外部网站。我只能像浏览器一样通过URL调用它们。这就是为什么我使用WebRequest来查看是否已建立Internet连接。

当我尝试致电" www.google.com"我得到了一个"(407)代理商需要"

本程序应该在许多电脑上使用。所以我不想在代码中设置硬编码的凭据用户和密码。

这是我的代码:

try
        {
            var uriBuilder = new UriBuilder(_URL);
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uriBuilder.Uri);
            request.Timeout = 1000;
            //request.Accept = "*/*";
            WebProxy proxy = new WebProxy("14*.***.***.***:8080");
            //request.UseDefaultCredentials = true; //Dont work
            //proxy.Credentials = System.Net.NetworkCredential(); //Dont work
            proxy.Credentials = CredentialCache.DefaultNetworkCredentials; //dont work too
            request.Proxy = proxy;
            request.PreAuthenticate = true;
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();

            _PingByURL = response.StatusCode == HttpStatusCode.OK;

        }
        catch 
        {

            _PingByURL =false;
        }

我的app.cfg:

<system.net>
  <defaultProxy enabled ="true" useDefaultCredentials = "true">
     <proxy usesystemdefault ="True" bypassonlocal="True"/> <!--True must written in capital Letters-->
  </defaultProxy>
</system.net>

我如何解决错误&#34;(407)需要代理验证&#34;? 或者有没有更好的方法来检查是否通过代理建立了Internet连接而没有ping它?

1 个答案:

答案 0 :(得分:0)

我发现了我的错误。

  <system.net>
    <defaultProxy enabled ="true" useDefaultCredentials = "true">
      <!--<proxy usesystemdefault ="True" bypassonlocal="True"/>-->  //This is the fault
    </defaultProxy>
  </system.net>

此行导致麻烦。我从来没有在我的应用程序配置中对此有所了解,因为关于此行的其他线程中的解决方案。

但现在仅适用于Visual Studio 。如果我尝试.exe 没有Visual Studio,它仍然会说“407 Authenticationrequired”