首页 > 解决方案 > MongoDB.Driver.MongoAuthenticationException C# 连接

问题描述

我有这个基于 mongodb 连接示例的代码,我正在尝试插入一个对象。但是在 insertone 线上出现错误

这是错误数据: MongoDB.Driver.MongoAuthenticationException:“无法使用 sasl 协议机制 SCRAM-SHA-1 进行身份验证。” 内部 MongoCommandException:命令 saslContinue 失败:身份验证错误 身份验证失败..

我是使用 mongodb 的新手,不知道错误原因是什么。任何帮助

static void Main(string[] args)
        {
            MongoClient dbClient = new MongoClient("mongodb+srv://dbUser:dbPass001@cluster0-pfry9.mongodb.net/test?retryWrites=true&w=majority");
            var database = dbClient.GetDatabase("test");

            var collection = database.GetCollection<anyClassTest>("entities");
            var r = new anyClassTest() { name="Original", edad = 36, id = 1};
            collection.InsertOne(r);
        }

        public class anyClassTest
        {
            public string name { get; set; }
            public int edad { get; set; }
            public int id { get; set; }
        }

标签: c#mongodb

解决方案


对于独立的直接连接,请按以下方式创建客户端,

    var servers = new List<MongoServerAddress>() { new MongoServerAddress("hostname", 27017) };
    var credential = MongoCredential.CreateCredential("admin", "user", "pass");
    var mongoClientSettings = new MongoClientSettings()
    {
        ConnectionMode = ConnectionMode.Direct,
        Credential = credential,
        Servers = servers.ToArray(), 
        ApplicationName = "NameOfApp",
    };

    MongoClient client = new MongoClient(mongoClientSettings);

一旦您拥有客户端(已连接),您就可以获取数据库/集合并执行您需要的操作。

var database = client.GetDatabase("dbname");
var collection = database.GetCollection<anyClassTest>("entities");
var r = new anyClassTest() { name="Original", edad = 36, id = 1};
collection.InsertOne(r);

推荐阅读