我有一个使用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服务就可以了。虽然很聪明
答案 0 :(得分:2)
在内部,每个服务器都由ServicePoint类抽象。因此,一旦您明确地或隐式地创建了ServicePoint,它就不会改变。
此外,它可能正在缓存先前的连接并将其用于后续请求。
您可以尝试设置
HttpWebRequest.KeepAlive = false
和
HttpWebRequest.ConnectionGroupName = String.Format(“connection- {0}”, ++指数);
并查看是否强制.NET每次都创建一个新连接。
如果这不起作用,请尝试实现BindIPEndPointDelegate()方法并将其附加到webrequest。然后,对于每个请求,.NET将调用该委托来解析端点IPAddress,并且您可以在该委托中执行DNS.Resolve()。