SRV连接字符串时出现MongoConfigurationException

时间:2018-08-08 20:29:18

标签: c# mongodb .net-4.6.1

驱动程序语言-C#

驱动程序版本-2.7.0

数据库版本-4.0.0

.NET Framework 4.6.1

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

  

连接字符串   'mongodb + srv:// USER:PASS@uat-xxxx.mongodb.net/test?retryWrites = true'   无效。

代码

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中向我显示的字符串完全相同。

知道我在做什么错吗?

谢谢

1 个答案:

答案 0 :(得分:1)

我试图用

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#驱动程序2.7.0。

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

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

话虽这么说,您应该能够使用Atlas UI左侧的“支持”链接,为您的Atlas集群联系MongoDB支持。他们应该能够提供帮助。