无法从代码和RoboMongo IDE连接到cosmos文档数据库

时间:2018-06-05 19:15:51

标签: azure azure-cosmosdb azure-cosmosdb-mongoapi

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

System.TimeoutException:'使用CompositeServerSelector选择服务器30000ms后出现超时{Selectors = MongoDB.Driver.MongoClient + AreSessionsSupportedServerSelector,LatencyLimitingServerSelector {AllowedLatencyRange = 00:00:00.0150000}}。集群状态的客户端视图是{ClusterId:'1',ConnectionMode:'ReplicaSet',Type:'ReplicaSet',State:'Disconnected',Servers:[{ServerId:'{ClusterId:1,EndPoint:'Unspecified / testgp。 documents.azure.com:10255'}',EndPoint:'未指定/ 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错误: enter image description here

1 个答案:

答案 0 :(得分: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本身进行通信。 这有道理吗?