【发布时间】:2013-05-14 11:58:22
【问题描述】:
我有以下代码
private bool IsOnline()
{
try
{
var wr = WebRequest.CreateHttp("http://www.google.com");
wr.KeepAlive = false;
wr.Credentials = CredentialCache.DefaultCredentials;
using (wr.GetResponse())
{
return true;
}
}
catch
{
return false;
}
}
当我执行它时,它永远停留在 GetResponse 行。
感谢回复,我们发现问题出在默认代理中。 事实上,如果我按照以下方式构建一个新代理,它就会起作用
var registry = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings", false);
var proxy = (string)registry.GetValue("ProxyServer");
var isProxyEnabled = (int)registry.GetValue("ProxyEnable");
if (isProxyEnabled > 0)
{
wr.Proxy = new WebProxy(proxy, true, null, System.Net.CredentialCache.DefaultNetworkCredentials);
}
问题是这个变通方法代码从注册表中读取手动设置的代理。如果用户选择了“自动检测设置”,则它不起作用。
所以: - 在这种情况下如何找到代理地址? - 为什么默认代理不起作用?
【问题讨论】:
-
第一次尝试还是第 n 次尝试时卡住?
-
如果它适用于 Fiddler,则可能是代理问题...您可以从 IE 访问 google.com 吗?
-
@DanielMošmondor 在第一次尝试
-
@ThomasLevesque 是的,我可以从 IE 访问 google.com
标签: c# .net networking