Не удается подключиться к базе данных космоса из кода и из RoboMongo IDE - PullRequest
0 голосов
/ 05 июня 2018

Я пытаюсь подключиться к базе данных космоса, но получаю ошибку ниже тайм-аута.

System.TimeoutException: 'Истекло время ожидания после 30000 мс при выборе сервера с помощью CompositeServerSelector {Selectors = MongoDB.Driver.MongoClient + AreSessionsSupportedServerSelector,LatencyLimitingServerSelector {AllowedLatencyRange = 00: 00: 00.0150000}}.Клиентское представление состояния кластера: {ClusterId: '1', ConnectionMode: 'ReplicaSet', Тип: 'ReplicaSet', Состояние: 'Disconnected', Серверы: [{ServerId: '{ClusterId: 1, EndPoint:' Unspecified / testgp.documents.azure.com:10255 '}', конечная точка: 'Unspecified / testgp.documents.azure.com: 10255', состояние: 'Disconnected', тип: 'Unknown'}]}. '

код:

string connectionString = 
  @"mongodb://USERNAME:PASSWORD@testgp.documents.azure.com:10255/?ssl=true&replicaSet=globaldb";
MongoClientSettings settings = MongoClientSettings.FromUrl(
  new MongoUrl(connectionString)
);
settings.SslSettings = 
  new SslSettings() { EnabledSslProtocols = SslProtocols.Tls12 };
var mongoClient = new MongoClient(settings);

var db = mongoClient.GetDatabase(DATABASENAME);

IAsyncCursor<BsonDocument> collectionList1 = db.ListCollections();

Ошибка RoboMongo: введите описание изображения здесь

1 Ответ

0 голосов
/ 22 января 2019

Я не знаю, может ли это помочь в этом случае, но у меня были похожие проблемы (тайм-аут запроса), и я потратил много времени, пытаясь соединиться с cosmosdb с помощью mongodb api (из искрового кластера блоков данных).Проблема заключалась в синтаксисе строки подключения, заданном Azure (точно так же, как показано в вашем примере, а именно: "mongodb: // ИМЯ ПОЛЬЗОВАТЕЛЯ: PASSWORD@testgp.documents.azure.com: 10255 /? Ssl = true & replicaSet = globaldb"), чтоне включал ни коллекцию, ни имена баз данных.

Чтобы решить проблему с подключением, я изменил строку подключения на: "mongodb: // ИМЯ ПОЛЬЗОВАТЕЛЯ: PASSWORD@testgp.documents.azure.com: 10255 / DATABASE_NAME.COLLECTION_NAME ? Ssl = true & replicaSet = globaldb "

В некотором смысле, я понимаю, что драйвер MongoDB хочет иметь дело с экземпляром MongoDB в CosmosDB и не может напрямую взаимодействовать с самим CosmosDB.Имеет ли это смысл?

...