2

尽我所能,我无法将地址解析为 IP。代码片段如下所示。我不断收到 No such host is known 异常,即使我可以用我的浏览器访问谷歌(DNS 服务器几乎肯定在工作)。然而,我在公司的防火墙后面。

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
}
4

3 回答 3

3

您的代码没有任何问题。鉴于您可以从 Web 浏览器访问 www.google.com,下一个最可能的问题是 Web 浏览器正在使用代理服务器。网络浏览器实际上是通过允许通过防火墙的代理服务器访问 www.google.com。您编写的简单应用程序不允许通过防火墙并导致异常。

您可以通过查看 Internet Explorer 中的代理设置来验证这一点。

工具 -> 选项 -> 连接 -> 局域网设置

会有一个代理服务器组设置。如果存在值,则几乎可以肯定这是您的问题。

于 2008-11-14T07:54:02.097 回答
2

您需要设置代理:

这是一个应该为以下所有调用设置它的片段:

    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;
    }
于 2008-11-14T09:02:04.333 回答
1

与其尝试通过浏览器,不如尝试从命令行 ping www.google.com(当然也可以是其他主机)。

ping 本身可能不起作用,但它应该首先显示 IP 地址解析。如果您收到这样的错误消息:

    Ping 请求找不到主机 www.google.com。
    请检查名称并重试。

那么很可能代理服务器在您浏览时正在为您进行 DNS 查找,并且您的 DNS 服务器无法正常工作或您的机器的网络设置不正确。

于 2008-11-14T08:47:48.137 回答