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

Xamarin Forms Android应用连接MongoDB Atlas触发DnsClientWrapper异常

解决Xamarin Forms Android对接MongoDB Atlas的DNS初始化/解析异常问题

以下是针对你遇到的问题的具体解决思路:

1. 确认Android网络权限配置

在Android项目的AndroidManifest.xml中确保添加必要的网络权限:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

如果应用目标是Android 11(API 30)及以上,还需要在<application>标签内添加网络请求允许配置:

<application android:usesCleartextTraffic="true">

(注:MongoDB Atlas使用HTTPS,此配置用于避免系统对网络请求的限制干扰)

2. 自定义MongoDB的DNS解析器

Xamarin Android默认DNS解析实现可能与MongoDB驱动存在兼容性问题,可手动指定系统DNS或自定义解析器:

var settings = MongoClientSettings.FromConnectionString(connectionString);
settings.ServerApi = new ServerApi(ServerApiVersion.V1);
settings.LinqProvider = LinqProvider.V3;

// 使用系统DNS解析器
settings.DnsResolver = new SystemDnsResolver();

var client = new MongoClient(settings);

若使用旧版本驱动(如v2.73),可实现自定义IDnsResolver:

public class CustomDnsResolver : IDnsResolver
{
    public Task<IEnumerable<DnsRecord>> ResolveAsync(string hostName, CancellationToken cancellationToken)
    {
        var addresses = Dns.GetHostAddresses(hostName);
        var records = addresses.Select(a => new DnsRecord(a));
        return Task.FromResult(records.AsEnumerable());
    }
}

// 应用自定义解析器
settings.DnsResolver = new CustomDnsResolver();

3. 调整MongoDB驱动版本

v2.17.1与v2.73均存在Xamarin Android兼容性问题,建议尝试v2.19.0及以上的稳定版本(该版本修复了多个移动端适配BUG)。更新NuGet包后保留原ServerApi与LinqProvider配置即可。

4. 检查设备私有DNS设置

三星S21的Android 12默认可能开启私有DNS功能,会导致Atlas主机名解析失败:

  • 打开设备「设置」→「连接」→「更多连接设置」→「私有DNS」
  • 将设置改为「自动」或「关闭」后重新测试应用

5. 直接使用Atlas集群IP地址

若上述方法无效,可将连接字符串中的主机名替换为Atlas集群的实际IP:

  1. 在本地终端执行nslookup <你的Atlas主机名>(如nslookup cluster0-shard-00-00.mongodb.net)获取IP
  2. 修改连接字符串,例如:
mongodb+srv://<用户名>:<密码>@192.168.1.100:27017/yourdb?ssl=true&replicaSet=Cluster0-shard-0&authSource=admin&retryWrites=true&w=majority

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 07:24:19