SRV 连接字符串时出现 MongoConfigurationException

MongoConfigurationException when SRV connection string

驱动程序语言 - C#

驱动程序版本 - 2.7.0

数据库版本 - 4.0.0

.NET Framework 4.6.1

异常消息(凭据和服务器已删除)

The connection string 'mongodb+srv://USER:PASS@uat-xxxx.mongodb.net/test?retryWrites=true' is not valid.

代码

var client = new MongoClient(@"mongodb+srv://USER:PASS@uat-xxxx.mongodb.net/test?retryWrites=true");

用户名和密码不包含特殊字符

未尝试连接到服务器。

但是,如果我使用 URI 版本

,这会正常工作
var client = new MongoClient(@"mongodb://USER:PASS@uat-shard-00-00-xxxxx.mongodb.net:27017,uat-shard-00-01-xxxxx.mongodb.net:27017,uat-shard-00-02-xxxxx.mongodb.net:27017/test?ssl=true&replicaSet=UAT-shard-0&authSource=admin&retryWrites=true");

我试图破译来自 the source 的验证规则,但这超出了我的正则表达式能力。

srv 连接字符串对我来说很好,与 Mongo Atlas UI 中呈现给我的完全相同。

知道我做错了什么吗?

谢谢

我尝试使用

重现这个
var client = new MongoClient("mongodb+srv://USER:PASS@cluster0-xxxx.mongodb.net/test?retryWrites=true");
var dbs = await client.ListDatabaseNames().ToListAsync();
Console.WriteLine(dbs);

这给了我预期的输出(2 个数据库名称)。

我的测试环境是.NET 4.6.1、LINQPad、C# Driver 2.7.0。

您可以尝试使用 Mongo Shell 从等式中消除 C# 驱动程序(和框架)进行测试。如果您使用的是 Mongo Shell 版本 3.6 或更高版本,您可以使用类似于

的命令测试连接
mongo "mongodb+srv://cluster0-xxxx.mongodb.net/test" --username USER

也就是说,您应该能够联系 MongoDB 支持您的 atlas 集群,使用 Atlas 左侧的 "Support" link UI.他们应该能够提供帮助。