程序运行时Dns设置已更改

时间:2011-08-23 21:13:21

标签: c# httpwebrequest dns

我有一个使用WebRequest访问http网站的程序。 如果我启动程序执行一些webRequests,然后更改我的机器的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查找吗?

编辑:似乎重新启动DnsClient缓存的Windows服务就可以了。虽然很聪明

1 个答案:

答案 0 :(得分:2)

在内部,每个服务器都由ServicePoint类抽象。因此,一旦您明确地或隐式地创建了ServicePoint,它就不会改变。

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

您可以尝试设置

  

HttpWebRequest.KeepAlive = false

  

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

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

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