为什么GetHostByAddress仅对Windows 7客户端失败?

时间:2012-04-04 17:42:55

标签: asp.net .net-3.5

在使用System.Net.GetHostByAddress方法的Web应用程序中,我们遇到了返回错误主机名的方法的问题。

问题在于,对于IP地址,它始终为Windows 7客户端返回不正确的主机名。运行Windows XP的系统正常返回其主机名。

我们使用的代码如下所示:

host = System.Net.Dns.GetHostByAddress(GetIPv4Address)
strComputerName = host.HostName

GetIPv4Address是访问网络应用程序的地址。但是,我们也尝试使用相同的结果直接硬编码IP地址:

host = System.Net.Dns.GetHostByAddress("192.168.1.1")
strComputerName = host.HostName

最后的皱纹是,对于任何给定的IP地址,GetHostByAddress大多数时间都返回相同(不正确的)主机名。但是,每隔一段时间它就会抛出一个SocketException:不知道这样的主机。

更新

  • 我们根据API documentation的评论建议从GetHostEntry切换到GetHostByAddress。

  • GetHostEntry也会返回错误的结果。

  • 进一步的调查显示nslookup返回的结果类似于我们从GetHost *获得的结果。所以它可能不是.NET问题。我们正在联系我们的网络管理员,看看他们是否可以解决这个问题。

1 个答案:

答案 0 :(得分:0)

不推荐使用GetHostByAddress。以下是我的表现:

string ComputerName;
try
{
    ComputerName = System.Net.Dns.GetHostEntry(IPAddress).HostName;
}
catch (Exception e)
{
    ComputerName = "Unknown";
}

这适用于Windows 7客户端。我没有尝试过GetHostByAddress,所以ymmv。