remota - No se puede conectar a MongoDB(MongoLabs) a través del cliente C#
habilitar autenticacion mongodb (2)
Si tuviera que aventurarme a adivinar, el problema probablemente sea un problema con el cortafuegos. Debe verificar lo siguiente
-
nslookup
del host (ds048719.mlab.com) del host de aplicaciones C # -
ping
del host (ds048719.mlab.com) desde el host de aplicaciones C # (puede fallar, dependiendo de la configuración de mLab) - Que su dirección IP está incluida en la lista blanca
- Pruebe la conexión utilizando Mongo Shell desde el mismo host donde se ejecuta la aplicación C #. mLab tiene documentos aquí .
- Pruebe la conexión con un
telnet ds048719.mlab.com 48719
, p. Ej.telnet ds048719.mlab.com 48719
- Asegúrese de estar utilizando la base de datos de
authenticationDatabase
correcta (en su ejemplo, esto es especificado por/db
), generalmente esadmin
pero podría ser el nombre de su base de datos si se encuentra en una instancia compartida.
Puede encontrar los documentos sobre cómo conectarse con el controlador C # en los Documentos del controlador MongoDB C # . Es importante tener en cuenta lo siguiente:
El componente de la base de datos
El componente de la base de datos es opcional y se utiliza para indicar en qué base de datos se debe autenticar. Cuando no se proporciona el componente de la base de datos, se utiliza la base de datos "admin".
mongodb://host:27017/mydb
Arriba, la base de datos con el nombre "mydb" es donde se almacenan las credenciales para la aplicación.
NOTA:
Algunos controladores utilizan el componente de la base de datos para indicar con qué base de datos trabajar de forma predeterminada. El controlador .NET, mientras analiza el componente de la base de datos, no usa el componente de la base de datos para otra cosa que no sea la autenticación.
Finalmente, sugeriría en el futuro, ofuscar el nombre de host y el puerto al publicar en SO. Si bien la seguridad solo a través de la oscuridad es una mala política, ciertamente agrega una capa de defensa para su despliegue de MongoDB.
Antecedentes de la pregunta:
Configuré en MongoLabs (mLab - https://mlab.com/ ) una base de datos y agregué una colección muy simple. Estoy usando el controlador MongoDB para intentar conectarme y trabajar con esta colección a través del controlador C # 3.2.
La cuestión:
No puedo conectarme a mi base de datos a través del controlador C # con una prueba de autenticación constante, como se muestra a continuación:
System.TimeoutException: se produjo un tiempo de espera después de 30000ms al seleccionar un servidor utilizando CompositeServerSelector {Selectors = ReadPreferenceServerSelector {ReadPreference = {Mode = Primary, TagSets = []}}, LatencyLimitingServerSelector {AllowedLatencyRange = 00: 00: 00.0150000}}. La vista del cliente del estado del clúster es {ClusterId: "1", ConnectionMode: "Automático", Tipo: "Desconocido", Estado: "Desconectado", Servidores: [{ServerId: "{ClusterId: 1, EndPoint:" Unspecified / ds048719. mlab.com:48719 "}", EndPoint: "Unspecified / ds048719.mlab.com: 48719", estado: "desconectado", tipo: "Desconocido", HeartbeatException: "MongoDB.Driver.MongoConnectionException: se produjo una excepción al abrir un conexión al servidor. ---> MongoDB.Driver.MongoAuthenticationException: no se puede autenticar mediante el mecanismo de protocolo sasl SCRAM-SHA-1. ---> MongoDB.Driver.MongoCommandException: comando saslStart failed: Falló la autenticación.
El código:
He intentado varias formas diferentes de tratar de autenticar la solicitud. Actualmente estoy intentando simplemente usar la clase MongoClient
, como se muestra:
MongoClient client;
var connectionString = "mongodb://userNameGoesHereRemovedForSO:[email protected]:48719/db";
client = new MongoClient(connectionString);
var database = client.GetDatabase("testDB");
var collection = database.GetCollection<string>("test");
Cualquier ayuda o ejemplos de cómo puedo superar con éxito este problema de autenticación sería muy apreciada.
Su cadena de conexión puede ser incorrecta. Usted tiene / db al final, ¿es "db" el nombre de su base de datos de autenticación?
Asegúrese de que su base de datos de autenticación sea correcta. Si no es así, es posible que desee eliminarlo todo junto y dejar que vuelva a administrar