无法使用C#Driver 1.10连接到MongoDB 3.0.0

时间:2015-03-04 15:12:22

标签: c# mongodb azure

我在Azure服务器上安装了 MongoDB 3.0.0 实例,并在admin db上创建了一个用户:

{ 
    "_id" : "admin.skMongo", 
    "user" : "skMongo", 
    "db" : "admin", 
    "credentials" : {
        "SCRAM-SHA-1" : {
            "iterationCount" : NumberInt(10000), 
            "salt" : "(someSalt)", 
            "storedKey" : "(somekey)", 
            "serverKey" : "(somekey)"
        }
    }, 
    "customData" : {

    }, 
    "roles" : [
        {
            "role" : "dbOwner", 
            "db" : "(my database)"
        }, 
        {
            "role" : "readWrite", 
            "db" : "(my database)"
        }, 
        {
            "role" : "readWriteAnyDatabase", 
            "db" : "admin"
        }
    ]
}

通过使用MongoChef作为客户端,我可以连接到此实例而不会遇到问题。我正在使用这些设置:

Server: (my ip address)
Port: 27017
Database: admin
Username: skMongo
Password: (mypassword)

但是当我尝试使用官方 C#MongoDB驱动程序1.10.0.62 进行连接时,我收到此错误:

  

无法连接到服务器23.97.171.16:27017:无效的凭据   数据库' admin' ..

在这一行:

return collection.Find(q).ToList();

这是我用来初始化mongo db server的代码:

var credentials = MongoCredential.CreateMongoCRCredential("admin", "skMongo", "(my password)");

_server = new MongoServer(
    new MongoServerSettings
    {
        Server = string.IsNullOrEmpty(port) ? new MongoServerAddress(host) : new MongoServerAddress(host, int.Parse(port)),
        Credentials = new[] { credentials },
    });

_database = _server.GetDatabase("(my database)");
return _database;

此代码正在使用以前版本的mongo。我做错了什么?

1 个答案:

答案 0 :(得分:2)

我通过改变这一行来解决这个问题:

var credentials = MongoCredential.CreateMongoCRCredential("admin", "skMongo", "(my password)");

到此:

var credentials = MongoCredential.CreateScramSha1Credential("admin", "skMongo", ("my password"));