问题描述
我正在尝试从我的ASP.NET Core 3.1应用程序连接到MongoDB Atlas:
var client = new MongoClient("mongodb+srv://<user>:<password>@<my_db_instance>/test?retryWrites=true&w=majority");
var database = client.GetDatabase("test");
我收到以下错误:
ExtendedSocketException: No connection Could be made because the target machine actively refused it. <my_ip>:53
System.Net.sockets.socket.EndConnect(IAsyncResult asyncResult)
DnsResponseException: Query 22151 => <my_db_instance> IN TXT on <my_ip>:53 Failed with an error.
DnsClient.LookupClient.ResolveQuery(IReadOnlyList<NameServer> servers,DnsQuerySettings settings,DnsMessageHandler handler,DnsRequestMessage request,LookupClientAudit audit)
我试图将Atlas中的所有IP地址列入白名单,但这并没有帮助。 我的司机:
<packagereference Include="MongoDB.Driver" Version="2.11.1" />
<packagereference Include="MongoDB.Driver.Core" Version="2.11.1" />
我添加了.Core驱动程序来尝试解决此问题,但这也无济于事。我在做什么错了?
P.S。我可以连接mongo shell。
解决方法
No connection could be made because the target machine actively refused it.
不是白名单问题。
连接被拒绝意味着远程IP上的计算机接收到该数据包,但是没有进程在指定的端口上进行侦听。
错误报告远程IP为<my_ip>:53
。端口53是DNS解析器的注册端口。
。
因此,如果您在<my_ip>
上作为DNS服务器运行,则需要弄清楚为什么它不监听。
如果不是在my_ip
上运行DNS服务器,则需要弄清楚为什么asp.net使用<my_ip>
作为其DNS解析器。
您还可以尝试为群集使用旧版mongodb://
网址,以查看问题是否仅与SRV和TXT分辨率有关。