You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core 3.1连接MongoDB Atlas报错:目标机器主动拒绝连接

解决ASP.NET Core 3.1连接MongoDB Atlas时的DNS连接拒绝问题

从你描述的错误来看,核心问题是DNS查询失败(错误里提到的53端口是DNS服务的默认端口,目标机器拒绝了这个请求)。虽然你已经配置了Atlas的IP白名单,且mongo shell能正常连接,但ASP.NET Core应用的DNS解析逻辑或运行环境和shell存在差异。下面是几个针对性的排查和解决步骤:


1. 优先升级MongoDB驱动版本

你当前使用的MongoDB.Driver 2.11.1是2020年的旧版本,这个版本在处理mongodb+srv格式连接字符串的DNS解析时存在已知兼容性问题。建议直接升级到较新的稳定版本(比如2.20.x或更高),新版本修复了大量DNS解析相关的bug,大概率能解决这个问题。

修改你的csproj依赖:

<PackageReference Include="MongoDB.Driver" Version="2.20.0" />
<!-- 无需单独引用MongoDB.Driver.Core,MongoDB.Driver已包含该依赖 -->

2. 替换为非SRV格式的连接字符串

mongodb+srv格式需要先查询DNS的TXT记录来获取集群配置,这一步依赖正常的DNS服务访问。如果你的应用环境DNS解析受限,可以直接使用Atlas控制台提供的标准连接字符串(非SRV版本),它包含了集群所有节点的具体地址和端口,不需要额外的DNS解析。

你可以登录Atlas控制台,在Connect->Connect your application里选择Standard connection string,得到类似这样的字符串:

mongodb://<user>:<password>@cluster0-shard-00-00.mongodb.net:27017,cluster0-shard-00-01.mongodb.net:27017,cluster0-shard-00-02.mongodb.net:27017/test?ssl=true&replicaSet=atlas-xxxxxx-shard-0&authSource=admin&retryWrites=true&w=majority

直接替换代码里的连接字符串即可。


3. 检查应用的DNS配置和网络环境

  • 确认ASP.NET Core应用所在服务器的DNS服务器能正常解析Atlas域名:在服务器上执行nslookup <my_db_instance>命令,查看是否能返回正确结果。如果不能,可尝试修改服务器DNS配置为公共DNS(比如8.8.8.8或1.1.1.1)。
  • 如果应用运行在代理环境下,需确保代理允许DNS请求(53端口)通过,或在应用中配置代理信息。你可以通过MongoClientSettings设置代理:
var settings = MongoClientSettings.FromConnectionString("你的连接字符串");
settings.Proxy = new WebProxy("http://your-proxy-server:port");
var client = new MongoClient(settings);

4. 验证连接字符串的特殊字符编码

如果你的密码包含特殊字符(比如@、$、/等),需要对这些字符进行URL编码后再放到连接字符串里。虽然mongo shell可能自动处理编码,但.NET驱动需要明确的编码。例如密码P@ssw0rd要替换为P%40ssw0rd。


先尝试前两个方案(升级驱动或替换连接字符串),这是解决这类问题最常见的方法。如果仍未解决,再排查DNS和代理环境。

内容的提问来源于stack exchange,提问作者Nikita Fedorov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 00:08:14