HttpWebRequest代理身份验证域用户&;凭据(错误407)

本文关键字:凭据 错误 amp 身份验证 代理 用户 HttpWebRequest | 更新日期: 2023-09-27 18:21:06

我在公司网络中。在这个网络中,我无法通过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>

如何解决错误"(407)需要代理身份验证"?或者有没有更好的方法来检查Internet连接是否是通过代理建立的,而不需要ping它?

HttpWebRequest代理身份验证域用户&;凭据(错误407)

我发现了我的错误。

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

这条线引起了麻烦。我从来没有在我的应用程序配置中考虑过这一点,因为其他线程中有关于这一行的解决方案。

但现在它只能在Visual Studio中工作。如果我在没有VisualStudio的情况下尝试.exe,它仍然显示"407 Authenticationrequired"