Kliknij ten link Strona Mongo i spójrz na sekcję
Problem polega na tym, że uwierzytelniasz użytkownika mongoadmin dla clientdb. Ale użytkownik mongoadmin jest uwierzytelniany do admin db. Uzyskaj uwierzytelnienie użytkownika mongoadmin, a następnie uzyskaj dostęp do bazy danych klienta.
Poniżej znajduje się przykład przy użyciu metody 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");
}
I zgodnie z twoim kodem, poniżej zadziała:
Twój plik konfiguracyjny powinien wyglądać następująco:
<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>
I kod 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"]);
}
}
Jak widać, użytkownik mongoadmin jest najpierw uwierzytelniany do admin db. Następnie możesz połączyć się z bazą danych klienta