我正在使用C#和Mono在Ubuntu上开发软件,并且使用了像WebRequest
或Dns
这样的网络类。在开发阶段,我使用我的代码连接到本地web服务器192.168.1.101
,不久之后,我将其移动到102.168.1.20
,并使用本地DNS服务器为提到的IP地址提供可读名称(以模拟实际情况)。但是现在,无论我做什么,都无法在C#代码中连接到新服务器!以下是它们的状态:
$ ping myurl.local
=> 192.168.1.20$ nslookup myurl.local
=> 192.168.1.20来自我的代码日志:
Dns.GetHostAddresses("myurl.local")[0].ToString()
=> 192.168.1.101
我觉得Mono已经从以前缓存了DNS解析结果,并且它不会放手。因此,我在互联网上搜索了它,并找到了这个问题。它和我的问题一样,但是在Windows和.Net中,还有一个解决方案。不幸的是,它的解决方案不适用于我的情况,因为ServicePointManager.DnsRefreshTimeout
在Mono中没有实现!最糟糕的部分是,即使我重新启动软件和/或硬件,缓存也是持久的,因此我无法继续开发!
所以,我想知道是否有一种方法可以重置Mono的缓存,除了使用DnsRefreshTimeout
?即使是手动解决方案(例如,在shell中可以执行的操作!例如删除文件!?)。
我正在使用Ubuntu 12.04和Mono 3.2.3。