GetHostEntry返回本地计算机名而不是DNS名称

最后发布: 2018-09-26 12:56:45


问题

我有一台加入域名的计算机,其文字计算机名是“ mycomputername”。 它具有DHCP条目和DNS记录,其文字名称为“ mydnsname”。 是的,本地计算机名和DNS是不同的。

当我使用反向NSLOOKUP查询我们的DNS服务器时,将返回预期名称“ mydnsname”。

但是,如果我在本地计算机上使用以下C#代码,则会返回本地名称“ mycomputername”。

string ipaddress="123.456.789.123"; //but my Real network IP
IPHostEntry hostEntry = Dns.GetHostEntry(ipaddress);
Console.WriteLine hostEntry.HostName;

这是意外的。 据我所知,它应该查询DNS吗?

我确保将计算机命名为从未在DNS中使用过的名称,因此我知道DNS缓存在此阶段不会妨碍您的工作。 如果我在本地重命名计算机,请重新启动,然后再次运行代码-返回更新的计算机名。

如果我修改DNS,则在本地计算机上运行时,永远不会返回该修改的DNS名称。 如果我在其他计算机上运行代码,但查询相同的IP,它将返回预期的DNS条目

我试图刷新缓存,但是没有效果:有没有办法从C#WPF应用程序刷新DNS缓存? (在XP,Vista,Win7上)

NSLOOKUP命令返回正确的名称。

c# dns