C# 程序运行时更改了Dns设置

C# 程序运行时更改了Dns设置,c#,httpwebrequest,dns,C#,Httpwebrequest,Dns,我有一个使用WebRequest访问http站点的程序。 如果我启动程序执行一些webRequests,然后更改我机器的Dns设置,程序将不会更改Dns服务器 像 ..将我的网络接口的Dns设置更改为无效或捕获门户 WebRequest.Create("http://www.google.com"); // Still uses original dns server for dns lookup (or cache) ipconfig flushdns没有区别 我可以强制WebRequ

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

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

 WebRequest.Create("http://www.google.com"); 
 // Still uses original dns server for dns lookup (or cache)
ipconfig flushdns
没有区别

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


编辑:似乎重新启动windows服务for DnsClient缓存就可以做到这一点。在内部,每台服务器都由一个ServicePoint类抽象而成。因此,一旦您显式或隐式地创建了ServicePoint,它就不会更改

此外,它可能正在缓存以前的连接并将其用于后续请求

您可以尝试设置

HttpWebRequest.KeepAlive=false

HttpWebRequest.ConnectionGroupName=String.Format(“连接-{0}”, ++指数)

看看这是否会迫使.NET每次都创建一个新连接


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

如果使用DNS.resolve(主机名),会发生什么?你得到旧的还是新的价值?这是令人惊讶的。我原以为.NET会依赖操作系统来进行DNS解析/缓存。@Philipp这是我的下一步。围绕我的Web请求添加dns调试
 WebRequest.Create("http://www.google.com"); 
 // Still uses original dns server for dns lookup (or cache)