我试图通过传入ip地址来获取主机名。我使用以下代码。
System.Net.Dns.GetHostEntry("192.168.x.x").HostName
对于某些主机,上面的代码正确地返回了主机名,但是对于其他几个主机,它会抛出异常'No Such host found'。
有人可以告诉我为什么这会发生在某些主机上?
我在asp.net mvc应用程序中使用了上面的代码。
答案 0 :(得分:12)
并非所有IP都通过反向DNS条目正确设置。这些IP通常是懒惰ISP的最终消费者,他们不为其客户提供PTR
条记录。如果没有反向输入,你可以打赌也没有反向输入。因此,这些主机根本没有主机名,因此是例外。您需要为这些主机捕获此异常,并使用其他内容,例如其IP作为标识符。
答案 1 :(得分:2)
我正在使用Dns.GetHostByAddress
,即使它抱怨被折旧。 (VS2010定位3.5)
Dns.GetHostEntry
似乎会抛出异常。除了使用折旧方法之外,似乎没有任何.NET方法。 :\
(编辑:虽然上面的答案也是如此 - 有些机器只是没有主机名。我的答案就是如果你知道它应该有一个主机名,但GetHostEntry
不起作用)