【问题标题】:MongoConfigurationException when SRV connection stringSRV 连接字符串时出现 MongoConfigurationException
【发布时间】:2018-08-08 20:29:18
【问题描述】:

驱动语言 - C#

驱动程序版本 - 2.7.0

数据库版本 - 4.0.0

.NET 框架 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 中呈现给我的完全一样。

知道我做错了什么吗?

谢谢

【问题讨论】:

    标签: c# mongodb .net-4.6.1


    【解决方案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# Driver 2.7.0。

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

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

    话虽如此,您应该可以使用 Atlas UI 左侧的“支持”链接联系您的 atlas 集群的 MongoDB 支持。他们应该能够提供帮助。

    【讨论】:

    • 谢谢,这为我指明了正确的方向。我们最近更新了驱动程序。从项目中删除所有 bin 和 obj 目录并在 Visual Studio 中重建解决方案,这似乎解决了问题。
    • @alexs 很高兴听到这个消息!
    猜你喜欢
    • 1970-01-01
    • 2015-10-19
    • 2017-02-26
    • 2021-05-19
    • 2013-06-13
    • 1970-01-01
    • 2020-10-11
    • 2012-06-03
    • 2013-06-05
    相关资源
    最近更新 更多