dns - 仅在 Windows 2012 R2 上的 DNS 解析失败
问题描述
我遇到了一个非常奇怪的错误,我已将其范围缩小到特定场景,但由于潜在的影响,我需要尝试找出原因。
为应用程序 A v 1.0 构建的
应用程序 A v 2.0 也.NET 4.7.2
可以正常运行,但现在使用共享库突然导致 tcp 堆栈失败(特别是所有 DNS 解析失败,甚至是内部目标)Windows Server 2012 R2
.NET 4.7.2
.Net Standard 2.0
此错误仅发生在2012 R2
. 2016
工作得很好。即使仅包含共享库的程序集,也没有声明实际实例或进行引用,甚至没有 using 语句,只要将共享库包含在依赖项中,就会出现此错误。
在应用程序之外的 DNS 解析工作正常。FusionLogs 在加载到 myWindows 10 machine
和加载到2012 R2
. 唯一的区别是加载的本机图像的编码文件夹名称。
这是共享库中所有相关依赖项的列表
BouncyCastle.Crypto v 1.8.5:
Org.BouncyCastle.Crypto.Parameters;
Org.BouncyCastle.OpenSsl;
Org.BouncyCastle.Security;
Common.Logging v 3.4.1:
DnsClient v 1.2.0:
Microsoft.CSharp v 4.7.0:
Mimekit v 2.4.1:
NewtonSoft.Json v 12.0.1:
System v 4.0.0.0:
System.Collections.Generic;
System.Collections.Concurrent;
System.IO;
System.IO.Compression.FileSystem;
System.Drawing;
System.Numerics;
System.Runtime.Serialization;
System.Net;
System.Net.Http;
System.Net.Http.Headers;
System.Security.Cryptography;
System.Text;
System.Threading;
System.Threading.Tasks;
System.Xml;
例外:
17:16:21 [1] [Info] - DNS Query against 'google.com'
Unhandled Exception: System.Net.Sockets.SocketException: No such host is known
at System.Net.Dns.GetAddrInfo(String name)
at System.Net.Dns.InternalGetHostByName(String hostName, Boolean includeIPv6)
at System.Net.Dns.GetHostEntry(String hostNameOrAddress)
at DNSAPITestApp.Tester..ctor() in ...
at DNSAPITestApp.Program.Main(String[] args) in ...
我已经在网上进行了广泛的搜索,但是有太多类似 DNS 问题的白噪声仍然与这种特定情况或为什么会发生这种情况无关(同样重要的是如何确认任何理论)。
任何帮助将不胜感激。我不能发布很多代码,但是如果有任何特定区域使用了任何人都希望看到的特定依赖项,我可以添加代码片段。
解决方案
答案归功于MSDN上的 CoolDadTx
库名称是问题所在。当您编译该库时,它是 DnsApi.dll。这恰好与包含 DNS 本机逻辑的 Windows DLL 同名。当它尝试加载系统 DLL 时,它会找到您的,因为它首先搜索应用程序目录,然后尝试使用它,但当然,它不起作用。
将类库重命名为其他名称,然后重试。
推荐阅读
- swift - Swift SpriteKit 将物理添加到用户绘制的线
- android - 有效每千次展示费用和估算。收入不算在我的 admob 中?
- spring-boot - 如何在战争(jboss)之外设置特定于配置文件的applicaiton.properties(spring boot)?
- android - android中的ViewGroup layoutParams
- firebase - 两个同时读取请求的结果是否一致?
- c - 即使在我使用 malloc() 分配内存后 free() 也无法工作
- spring-mvc - Bean 名称“人”的 BindingResult 和普通目标对象都不能用作请求属性
- r - 在tidygraph中过滤
- reactjs - 搜索栏故障,随机(据说)发生
- c++ - std::sort 不适用于我的自定义迭代器