我在 Mono 上的 Dns 类(从 C# 调用)遇到了一个高度可重现的问题:如果我从多台机器(例如,在集群上)进行多次调用,或多或少同时进行(例如当批处理程序启动时) ,一些随机数的呼叫挂起。
Mono Dns 类似乎很可能没有正确超时并重新发出请求:DNS 使用基于 UDP 的 RPC 协议,并且由于 UDP 不可靠,如果十个数据包同时到达 DNS 服务器或某事和一个丢失,将不会有任何回复。
这是我的问题:有没有人知道从 Mono 上的 C# 中断对 Dns.GetHostName 或 Dns.GetHostInfo 的调用的干净方法,以便在发生这种情况时,我可以强制重新发出请求?