我在公司网络中。在此网络我无法通过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它?
答案 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”