程序运行时Dns设置已更改

svr*_*ist 5 c# dns httpwebrequest

我有一个使用WebRequest访问http站点的程序.如果我启动程序执行一些webRequests,然后更改我的机器的Dns设置,该程序将不会更改DNS服务器

喜欢

 WebRequest.Create("http://www.google.com");
Run Code Online (Sandbox Code Playgroud)

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

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

ipconfig flushdns 没有区别

我可以用任何方式强制WebRequest使用实际的DNS服务器进行dns查找吗?

编辑:似乎重新启动DnsClient缓存的Windows服务就可以了.虽然相当铁杆

fer*_*oze 2

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

此外,它可能会缓存先前的连接并将其用于后续请求。

您可以尝试设置

HttpWebRequest.KeepAlive = false

HttpWebRequest.ConnectionGroupName = String.Format("连接-{0}", ++index);

看看这是否会强制 .NET 每次都创建一个新连接。

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