2

我正在尝试连接到 cosmos db,但出现超时错误。

System.TimeoutException: '使用 CompositeServerSelector { Selectors = MongoDB.Driver.MongoClient+AreSessionsSupportedServerSelector, LatencyLimitingServerSelector{ AllowedLatencyRange = 00:00:00.0150000 } } 选择服务器 30000 毫秒后发生超时。集群状态的客户端视图是 { ClusterId : '1', ConnectionMode : 'ReplicaSet', Type : 'ReplicaSet', State : 'Disconnected', Servers : [{ ServerId: '{ ClusterId : 1, EndPoint : 'Unspecified/testgp.文档.azure.com:10255'}',端点:'未指定/testgp.documents.azure.com:10255',状态:'断开连接',类型:'未知'}] }。

代码:

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 错误: 在此处输入图像描述

4

1 回答 1

0

我不知道在这种情况下它是否有帮助,但我遇到了类似的问题(请求超时),并且在尝试使用 mongodb api(来自 databricks spark 集群)连接到 cosmosdb 时花了很多时间找出。问题是 azure 给出的连接字符串语法(与您在示例中显示的完全相同,即:“mongodb://USERNAME:PASSWORD@testgp.documents.azure.com:10255/?ssl=true&replicaSet=globaldb”)既不包括集合也不包括数据库名称。

为了解决连接问题,我将连接字符串更改为:“mongodb://USERNAME:PASSWORD@testgp.documents.azure.com:10255/ DATABASE_NAME.COLLECTION_NAME ?ssl=true&replicaSet=globaldb”

在某种程度上,我了解 MongoDB 驱动程序想要处理 CosmosDB 的 MongoDB 实例,并且无法直接与 CosmosDB 本身通信。这有意义吗?

于 2019-01-22T12:49:36.863 回答