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它?
我发现了我的错误。
<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"