我需要执行不同类型的DNS查询(例如DNS MX查找)。为此,我需要自动检测哪些DNS服务器与活动网络连接相关联。我在Windows应用程序和.NET Framework中使用的所有方法都不能用于UWP,原因各不相同(没有必需的类或NotImplementedException):WMI,Registry,System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces。
我检查了Windows.Networking.Connectivity命名空间但找不到我需要的内容。
答案 0 :(得分:1)
NetworkInterface.GetAllNetworkInterfaces
遗憾的是还没有在UWP上工作,尽管我并不确定为什么这是因为本机API可用。也许我错过了什么。
无论如何,昨天我遇到了同样的问题,最终使用了IpHlpApi中的GetNetworkParams
。
至少在Netstandard2.0可能最终以托管方式支持这些API之前......
GetNetworkParams
通过一个非常简单的调用为您提供主机名和所有当前配置的DNS服务器地址。
您还可以使用GetAdaptersAddresses,它提供了更多信息以及所有这些信息(用于填充NetworkInterface
托管内容)。但是,嘿,我们只需要DNS服务器吗?
从GetNetworkParams获得FIXED_INFO
结构,其中包含(PIP_ADDR_STRING CurrentDnsServer
)dns服务器列表。
如果您不想自己实现所有这些,可以使用我的DnsClient.NET library。如果您没有手动指定IpEndpoint,它会使用上面提到的内容初始化系统的DNS服务器。
e.g。
var lookup = new LookupClient();
var result = await lookup.QueryAsync("example.com", QueryType.MX);
应该可以正常工作。