在程序运行时更改了Dns设置

本文关键字:Dns 设置 程序 运行时 | 更新日期: 2023-09-27 18:06:24

我有一个使用WebRequest访问http站点的程序。如果我启动程序执行一些webquest,然后更改我的机器的Dns设置,程序将不会更改Dns -servers

 WebRequest.Create("http://www.google.com");

…将我的网络接口的Dns设置更改为无效或捕获门户....

 WebRequest.Create("http://www.google.com"); 
 // Still uses original dns server for dns lookup (or cache)

ipconfig flushdns无差异

我可以强迫WebRequest使用实际的dns服务器进行dns查找吗?

编辑:似乎重新启动windows服务为DnsClient缓存做的技巧。相当硬核

在程序运行时更改了Dns设置

在内部,每个服务器都由ServicePoint类抽象。因此,一旦你创建了ServicePoint,无论是显式的还是隐式的,它都不会改变。

同时,它也可能缓存前一个连接并将其用于后续请求。

你可以试着设置

HttpWebRequest。KeepAlive = false

HttpWebRequest。ConnectionGroupName = String。格式("连接-{0}",

+ +指数);

,看看这是否会迫使。net每次都创建一个新的连接。

如果这不起作用,尝试实现BindIPEndPointDelegate()方法并将其附加到webrequest。然后,对于每个请求,. net将调用该委托来解析端点IPAddress,您可以在该委托中执行DNS.Resolve()。