我有一个非常具体的问题有关Dns.GetHostEntry:Dns.GetHostEntry错误情况和解决方法
服务使用Dns.GetHostEntry检索主机的所有IP不会忽略,使用的主机名。这一直运行良好。 在特定的客户,查询特定主机时,Dns.GetHostEntry抛出“没有这样的主机是已知的”错误。只有在尝试解析位于与安装服务的计算机不同的域上的主机时,才会出现此问题。该服务已经工作了一段时间,但最近停止工作,抛出“没有这样的主机是已知的”错误(遗憾的是,没有堆栈跟踪可用)。 Nslookup虽然工作,没有问题。 有问题的服务是用VB.NET编写的,面向.NET Framwork 2.0。
.NET 3.0条目中的注释(http://msdn.microsoft.com/en-us/library/ms143998(v=VS.85).aspx)指出主机的反向DNS条目可能存在问题,但我无法在测试网络上重现问题,即使所有反向删除查找区域(对于其他.NET版本,有更多评论,都有类似的问题)[编辑:]即使是故意添加一个错误的PTR记录也不会使我的测试机器上出现问题
[编辑2:]发生错误的唯一原因是断开网络适配器,从而使DNS服务器不可用,即使正向解析仍然因缓存而起作用。
所以,我的问题是:
- 在哪些情况下GetHostEntry抛出此特定错误?
- 它使用哪种分辨率方法?如果我没有弄错,它使用非托管WinSock函数getnameinfo(http://msdn.microsoft.com/en-us/library/ms738532(v=vs.85).aspx),:“名称解析可以通过域名系统(DNS),本地主机文件,或其他命名机制”。
- 任何想法为什么突然失败的机器在其他域(但不是在同一域的机器)?
感谢和问候, cun83
您是否在本地计算机上“ipconfig/flushdns”并在修改了PTR记录后重新启动DNS服务器?您可能仍然在使用缓存的结果 – 2011-02-04 16:16:25