0

在使用 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 问题。我们正在联系我们的网络管理员,看看他们是否可以解决。

4

1 回答 1

0

GetHostByAddress 已弃用。这是我的做法:

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

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

于 2012-04-04T23:58:08.097 回答