驱动程序语言-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中向我显示的字符串完全相同。
知道我在做什么错吗?
谢谢
答案 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支持。他们应该能够提供帮助。