在使用 System.Net.GetHostByAddress 方法的 Web 应用程序中,我们遇到了返回错误主机名的方法的问题。
问题是,给定一个 IP 地址,它总是返回一个不正确的主机名,仅适用于 Windows 7 客户端。运行 Windows XP 的系统正常返回其主机名。
我们使用的代码如下所示:
host = System.Net.Dns.GetHostByAddress(GetIPv4Address)
strComputerName = host.HostName
GetIPv4Address 是访问 Web 应用程序的地址。但是,我们也尝试过直接对 IP 地址进行硬编码,结果相同:
host = System.Net.Dns.GetHostByAddress("192.168.1.1")
strComputerName = host.HostName
最后一个问题是,对于任何给定的 IP 地址,GetHostByAddress 大多数时间都返回相同的(不正确的)主机名。但是,每隔一段时间它就会抛出一个 SocketException: No such host is known。
更新:
根据API 文档的评论建议,我们从 GetHostEntry 切换到 GetHostByAddress 。
GetHostEntry 也返回不正确的结果。
进一步调查显示,nslookup 返回的结果与我们从 GetHost* 获得的结果相似。所以它可能不是 .NET 问题。我们正在联系我们的网络管理员,看看他们是否可以解决。