首页 > 解决方案 > GetHostEntry 返回本地计算机名而不是 DNS 名称

问题描述

我有一台加入域的计算机,其计算机名称为“mycomputername”。它有一个 DHCP 条目和带有文字名称“mydnsname”的 DNS 记录。是的,本地计算机名和 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

解决方案


推荐阅读