通过DNS.GetHostEntry将IP地址转换为主机名

时间:2011-06-15 04:53:44

标签: c# asp.net dns

我试图通过传入ip地址来获取主机名。我使用以下代码。

System.Net.Dns.GetHostEntry("192.168.x.x").HostName

对于某些主机,上面的代码正确地返回了主机名,但是对于其他几个主机,它会抛出异常'No Such host found'。

有人可以告诉我为什么这会发生在某些主机上?

我在asp.net mvc应用程序中使用了上面的代码。

2 个答案:

答案 0 :(得分:12)

并非所有IP都通过反向DNS条目正确设置。这些IP通常是懒惰ISP的最终消费者,他们不为其客户提供PTR条记录。如果没有反向输入,你可以打赌也没有反向输入。因此,这些主机根本没有主机名,因此是例外。您需要为这些主机捕获此异常,并使用其他内容,例如其IP作为标识符。

答案 1 :(得分:2)

我正在使用Dns.GetHostByAddress,即使它抱怨被折旧。 (VS2010定位3.5)

如果即使DNS知道主机名也无法访问目标主机,

Dns.GetHostEntry似乎会抛出异常。除了使用折旧方法之外,似乎没有任何.NET方法。 :\

(编辑:虽然上面的答案也是如此 - 有些机器只是没有主机名。我的答案就是如果你知道它应该有一个主机名,但GetHostEntry不起作用)