有没有一种方法,我可以搜索一个Dns服务器的记录,而不使用WMI建立连接到Dns服务器使用.NET 4,5?
我在.NET 4.5中完全使用了Wmi,但发现它太慢了(即使缓存连接时也是如此)。太不一致了。一些搜索查询是2秒,而另一些则超过100秒。
据我所知,我无法进一步优化查询。
Query: string query = "SELECT * FROM " + propertiesStruct.Table + " WHERE ContainerName = '" + domain + "' AND OwnerName ='" + name + "." + domain + "'";因此,我正在寻找一种连接到dns服务器的方法,通过名称和域查询dns记录,并在可能的情况下获得与WMI查询相同/类似的数据。
我看过.NET 4.5 System.Net.Dns类和方法,但发现它没有提供足够的信息。(https://msdn.microsoft.com/en-us/library/ms143998%28v=vs.110%29.aspx)
我想要得到的信息是:例如-
DNS记录fqdn - stackoverflow.com
DNS记录名-堆栈溢出
DNS域/区域- com
DNS记录值- 198.252.206.140
DNS记录类型- A/AAAA/CNAME/PTR
DNS记录ttl - 3600
即使它返回所有具有相同fqdn但值不同的记录,因为它是一个不同的记录类型,这是很好的,我可以手动过滤结果的类型,我正在寻找。
我发现的最接近的东西是Linux挖掘,但这必须在windows服务器上的.net中完成。
谢谢
发布于 2016-02-17 22:00:01
如果您可以使用p/invoke,那么就会有DNSAPI库/DLL。见pinvoke.net上的DNSAPI。一些选项建议DnsQuery方法可以使用dns-缓存,也可以关闭缓存的使用。我已经成功地使用了这个API,但是我们警告说,它是一个相当低的级别。例如,如果要进行反向查找,则可能必须显式地组装查询(即对于192.168.0.1,使用PTR类型的查询"1.0.168.192.in-addr.arpa“)。
https://stackoverflow.com/questions/29221876
复制相似问题