仅Windows 2012 R2上的DNS解析失败

问题描述 投票:0回答:1

我遇到了一个非常奇怪的错误,已经将其缩小到特定的情况,但是由于潜在的影响,我需要尝试找出原因。

.NET 4.7.2构建的Application A v 1.0在Windows Server 2012 R2上运行良好也为.NET 4.7.2构建的应用程序A v 2.0,但现在使用.Net Standard 2.0共享库突然导致tcp堆栈失败(特别是所有DNS解析失败,甚至内部目标也是如此)

此错误仅在2012 R2上发生。 2016可以正常工作。即使仅包含共享库的程序集,没有声明任何实际实例或进行任何引用,甚至没有using语句,仅在共享库中具有共享库也会导致此错误。

在应用程序外部,DNS解析正常。FusionLogs在Windows 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问题的白噪声太多,仍然与这种特定情况或发生这种情况的原因无关(以及同样重要的是如何确认任何理论)。

任何帮助将不胜感激。我不能发布太多代码,但是如果在任何使用特定依赖项的特定区域,任何人都希望看到我可以添加代码段。

dns windows-server-2012-r2 .net-standard .net-4.7.2
1个回答
0
投票

信用证将在MSDN处转到CoolDadTx,>

库名称就是问题。当您编译该库时,它就是DnsApi.dll。该名称恰好与包含DNS本机逻辑的Windows DLL相同。当它尝试加载系统DLL时,它将找到您的文件,因为它首先搜索应用程序目录,然后尝试使用它,但是,它当然不起作用。

将类库重命名为其他名称,然后重试。

© www.soinside.com 2019 - 2024. All rights reserved.