代码之家  ›  专栏  ›  技术社区  ›  alexs

SRV连接字符串时的MongoConfigurationException

  •  0
  • alexs  · 技术社区  · 7 年前

    驱动程序语言-C#

    驱动程序版本-2.7.0

    数据库版本-4.0.0

    .NET框架4.6.1

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

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

    代码

    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 回复  |  直到 7 年前
        1
  •  1
  •   Pete Garafano    7 年前

    我试图用

    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#驱动程序(和框架)。如果您使用的是MongoShell3.6或更高版本,可以使用类似于

    mongo "mongodb+srv://cluster0-xxxx.mongodb.net/test" --username USER
    

    也就是说,您应该能够使用atlas用户界面左侧的“支持”链接,联系MongoDB对atlas集群的支持。他们应该能帮忙。

    推荐文章