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
-
nslookupdel host (ds048719.mlab.com) del host de aplicaciones C # -
pingdel 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
authenticationDatabasecorrecta (en su ejemplo, esto es especificado por/db), generalmente esadminpero 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/mydbArriba, 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