gpt4 book ai didi

.net - Dns.GetHostEntry错误情况及解决方法

转载 作者:行者123 更新时间:2023-12-02 20:13:29 26 4
gpt4 key购买 nike

我有一个关于 Dns.GetHostEntry 的非常具体的问题:

服务使用 Dns.GetHostEntry 来检索主机的所有 IP 地址,并使用主机的名称。这一直运作良好。对于特定客户,Dns.GetHostEntry 在查询特定主机时会抛出“没有已知的主机”错误。仅当尝试解析与安装服务的计算机位于不同域的主机时,才会出现此问题。该服务已经工作了相当长一段时间,但最近停止工作,抛出“没有已知的主机”错误(遗憾的是,没有可用的堆栈跟踪)。 Nslookup 可以工作,没有问题。该服务是用 VB.NET 编写的,面向 .NET Framwork 2.0。

.NET 3.0 的 MSDN 条目中的注释(http://msdn.microsoft.com/en-us/library/ms143998(v=VS.85).aspx 表明主机的反向 DNS 条目可能存在问题,但我无法在测试网络上重现该问题,即使使用所有反向查找区域已删除(其他 .NET 版本有更多评论,都有类似的问题)。[编辑:] 即使故意添加错误的 PTR 记录也不会使问题出现在我的测试机上。

[EDIT2:] 唯一导致错误的原因是断开网络适配器的连接,从而使 DNS 服务器不可用,尽管由于缓存,正向解析仍然有效。

所以,我的问题是:

  1. 在什么情况下 GetHostEntry 会抛出此特定错误?
  2. 它使用哪些解析方法?如果我没记错的话,它使用非托管 WinSock 函数 getnameinfo ( http://msdn.microsoft.com/en-us/library/ms738532(v=vs.85).aspx ),:“名称解析可以通过域名系统 (DNS)、本地主机文件,或通过其他命名机制”。
  3. 知道为什么其他域中的计算机突然失败(但同一域中的计算机则不然)吗?

谢谢并致以最诚挚的问候,寸83

最佳答案

我个人总是使用Dns.GetHostAddresses 。它总是给我一个可靠的结果。

关于为什么Dns.GetHostEntry给你指定的错误,我认为这是由于 DnsGetHostEntry将在返回 IP 地址之前尝试进行反向 DNS 查找。如果反向 DNS 查找失败,则会显示“没有已知的主机”。

据我所知,Dns.GetHostAddresses仅返回 IP 地址。

关于.net - Dns.GetHostEntry错误情况及解决方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4896180/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com