在使用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问题。我们正在联系我们的网络管理员,看看他们是否可以解决这个问题。
答案 0 :(得分:0)
不推荐使用GetHostByAddress。以下是我的表现:
string ComputerName;
try
{
ComputerName = System.Net.Dns.GetHostEntry(IPAddress).HostName;
}
catch (Exception e)
{
ComputerName = "Unknown";
}
这适用于Windows 7客户端。我没有尝试过GetHostByAddress,所以ymmv。