我已经创建了一个功能,它可以在同一领域内完美地工作。
在"Alpha.ca“域上使用时,可以使用"Win7-Alpha”这样的名称,并返回"Win7-Alpha.Alpha.ca“。
public static string TryGetServerFQDN(string ServerName)
{
string ServerFQDN = ServerName;
if (!string.IsNullOrEmpty(ServerName))
{
IPHostEntry serverIPEntry = null;
try
{
serverIPEntry = Dns.GetHostEntry(ServerName);
}
catch
{
}
if (serverIPEntry != null && !string.IsNullOrEmpty(serverIPEntry.HostName))
{
ServerFQDN = serverIPEntry.HostName;
}
}
return ServerFQDN;
}但是,如果我在"Beta.ca“域上尝试相同的操作,它只返回"Win7-Alpha”。如果它被传递,它就能够解析IPv4地址,但同样,它只返回“Win7-Alpha”.我不想要“Win7 7-Alpha”,我要FQDN!
在Beta.ca DNS上,我可以看到我想要的FQDN,那么为什么它不给我呢?

发布于 2018-08-16 16:33:21
微软似乎已经做了一些很有问题的编码实践。据我所知,Windows不会为您提供来自另一个域的FQDN名称,但您可以设置一个DNS后缀列表,该列表将强制使用域后缀查询名称。这似乎迫使Windows搜索与FQDN相匹配的条目(尽管它只使用主机名就可以完成此任务)。区别在于当它返回IP地址和它使用的名称时,它使用的名称是它从您指定的列表中创建的FQDN。
我已经验证了,一旦我有了带有列表的机器,我就能够使用我的函数,它将把HostName从另一个域解析到正确的FQDN。
在机器上
或使用组策略
我个人认为它是如此的愚蠢以至于DNS可以匹配一个IP地址或来自另一个域的HostName .它找到了记录,但是它不会给你记录的FQDN,当你看记录时,它似乎知道,它似乎就在那里!但是你不能拥有它,除非你硬编码一个DNS后缀的列表,然后你得到FQDN,然后使代码正常工作。表现真的很差!
//Once you add Alpha.ca to the DNS Suffix List on the machine running this code....
//This will now correctly return Win7-Alpha.Alpha.ca
Dns.GetHostEntry("Win7-Alpha").HostName;

https://stackoverflow.com/questions/51865028
复制相似问题