尽我所能,我无法解析IP地址。代码段如下所示。即使我可以使用我的浏览器访问谷歌(DNS服务器几乎肯定正在工作),我一直得到No这样的主机已知异常。然而,我却落后于公司的防火墙。
try
{
foreach (IPAddress address in Dns.GetHostAddresses("www.google.com"))
{
Console.WriteLine(address.ToString());
}
}
catch (SocketException e)
{
Console.WriteLine("Source : " + e.Source); // System
Console.WriteLine("Message : " + e.Message); // No such host is known
}
答案 0 :(得分:3)
您的代码没有任何问题。鉴于您可以从Web浏览器访问www.google.com,下一个最可能的问题是Web浏览器正在使用代理服务器。 Web浏览器实际上是通过允许通过防火墙的代理服务器访问www.google.com。您编写的简单应用程序不允许通过防火墙并导致异常。
您可以通过查看Internet Explorer中的代理设置来验证这一点。
工具 - >选项 - >连接 - > Lan设置
将有一个代理服务器组的设置。如果存在价值,这几乎肯定是你的问题。
答案 1 :(得分:1)
尝试通过命令行ping www.google.com(或其他主机),而不是尝试通过浏览器。
ping本身可能无法正常工作,但它应首先显示IP地址解析。如果您收到如下错误消息:
Ping request could not find host www.google.com. Please check the name and try again.
然后代理服务器可能会在您浏览时为您执行DNS查找,并且您的DNS服务器无法正常工作或您的计算机的网络设置不正确。
答案 2 :(得分:1)
您需要设置代理:
这是一个片段,应该为以下所有调用设置它:
protected void SetupProxy(string proxyUrl, string proxyLogin, string proxyPassword, string[] proxyBypass)
{
WebProxy proxy = new WebProxy(proxyUrl);
proxy.Credentials = new NetworkCredential(proxyLogin, proxyPassword);
proxy.BypassList = proxyBypass;
proxy.BypassProxyOnLocal = true;
WebRequest.DefaultWebProxy = proxy;
}