.netc#编程-玩转dns

tech2025-08-17  4

实用场景:当你有一个原正在使用的域名,现需要修改域名为新的ip地址(可能你的服务器变更),你会发现你的后端应用部署的服务器(即本地)通过域名去调用新服务器接口时,该域名指向的仍然是原服务器的ip地址,未能正确解析为新的服务器ip地址,这是因为dns缓存了该域名的解析地址。你需要做的是:清除dns缓存的域名解析地址。那么,你可以:1、直接使用命令行:cmd以管理员身份运行,执行ipconfig /flushdns (清除)、ipconfig /displaydns (查看) 2、以编程方式操作。

.net 以编程方式清除dns缓存:

static void Main(string[] args) { var hosts = new string[] { "test.abcd.com" }; while (true) { foreach (var hostName in hosts) { Console.WriteLine($"正在查找“{hostName}”"); try { IPHostEntry hostInfo = Dns.GetHostEntry(hostName); foreach (var ip in hostInfo.AddressList) { Console.WriteLine("\t{0}", ip); } DnsUtils.FlushCache(hostName); } catch (Exception ex) { Console.WriteLine($"找不到主机为“{hostName}”的相关数据!"); } } Thread.Sleep(1000); } } public class DnsUtils { [DllImport("dnsapi.dll", EntryPoint = "DnsFlushResolverCache")] static extern UInt32 DnsFlushResolverCache(); [DllImport("dnsapi.dll", EntryPoint = "DnsFlushResolverCacheEntry_A")] public static extern int DnsFlushResolverCacheEntry(string hostName); public static void FlushCache() { DnsFlushResolverCache(); } public static void FlushCache(string hostName) { DnsFlushResolverCacheEntry(hostName); } }
最新回复(0)