Dns例外.即使它返回一个很好的结果,如果输出到消息框
本文关键字:结果 很好 如果 输出 消息 一个 例外 返回 Dns | 更新日期: 2023-09-27 18:03:07
我从主机名中获得IP:
IPAddress[] serverIp = Dns.GetHostAddresses(serverFqdn);
string firstResult = serverIp[0].ToString();
如果我在messageBox中像这样调用firstResult:
MessageBox.Show(firstResult);
弹出消息框,显示正确的IP地址。
但是,如果不是消息框,我继续使用该IP地址进行ping测试,如下所示:
Ping pingSender = new Ping();
PingReply reply = pingSender.Send(firstResult);
我得到一个'SocketException'错误代码11001没有这样的主机是已知的与DNS查询的代码行。
当dns查询在第一个场景中明显成功时,怎么会发生这种情况?
编辑:如果我在DNS查询和ping之间插入消息框,它会弹出应有的IP地址。当我取消messagebox时,代码继续ping,然后在dns查询行代码上有一个异常,它在messagebox之前执行。
这是我不明白的部分。一个方法,显然是同步执行的,并成功地产生一个异常后,下一行代码也成功地运行?这是因为ping.send()需要一个ipaddress对象作为参数,所以您需要使用静态ipaddress .parse()方法首先获取一个ipaddress对象。然后,使用返回的对象作为Ping.send()调用的参数。
我找到了问题的原因,尽管仍然不确定为什么IDE在错误的地方显示异常。
对这个ping测试方法的一个调用发送的是IP而不是服务器名称。ping测试方法正在添加域名,然后ping测试试图使用(例如)
Ping pingSender = new Ping();
PingReply reply = pingSender.Send("192.168.1.1.domain.com");