sql >> Base de Datos >  >> NoSQL >> MongoDB

No se puede conectar a MongoDb (usando autenticación) usando mongocsharpdriver 2.7.0

Siga este enlace Sitio de Mongo y mira la Sección

El problema es que está autenticando al usuario mongoadmin para clientdb. Pero el usuario mongoadmin está autenticado en la base de datos de administración. Autentique al usuario mongoadmin y luego podrá acceder a clientdb.

A continuación se muestra el ejemplo utilizando el método URI:

        IMongoClient _client;
        public readonly IMongoDatabase _database;

        public MongoContext_URIBased()
        {
            var mongoUrl = new MongoUrl("mongodb://mongoadmin:[email protected]:2020/admin");
            _client = new MongoClient(mongoUrl);
            _database = _client.GetDatabase("clientdb");
        } 

Y de acuerdo con su código, a continuación funcionará:

Su archivo de configuración debería ser como:

<appSettings>
<add key="MongoMasterDatabaseName" value="admin" />
<add key="MongoUsername" value="mongoadmin" />
<add key="MongoPassword" value="secret" />
<add key="MongoPort" value="2020" />
<add key="MongoHost" value="172.17.103.158" />
<add key="MongoClientDatabaseName" value="clientDb" />


</appSettings>

Y código C#:

public class MongoContext
    {
        IMongoClient _client;
        public readonly IMongoDatabase _database;

        public MongoContext()
        {
            MongoCredential credential = MongoCredential.CreateCredential(ConfigurationManager.AppSettings["MongoMasterDatabaseName"], ConfigurationManager.AppSettings["MongoUsername"], ConfigurationManager.AppSettings["MongoPassword"]);
            var settings = new MongoClientSettings
            {
                Credential = credential,
                Server = new MongoServerAddress(, Convert.ToInt32(ConfigurationManager.AppSettings["MongoPort"]))
            };
            _client = new MongoClient(settings);
            _database = _client.GetDatabase(ConfigurationManager.AppSettings["MongoClientDatabaseName"]);
        }
    }

Como puede ver, el usuario de mongoadmin se autentica primero en la base de datos de administración. Entonces puedes conectarte a clientdb