无法使用Azure Cosmos DB连接到Mongo DB

Sou*_*osh 6 c# mongodb asp.net-core azure-cosmosdb

我已经在Azure中使用Mongo API创建了一个Cosmos DB数据库。我已经创建了客户端并进行了如下配置-

_mongoDbConnectionString = configuration["MongoDBConnectionString"];
_databaseName = configuration["MongoDBName"];
_client = new MongoClient(_mongoDbConnectionString);
_database = _client.GetDatabase(_databaseName);
_collectionName = configuration["MongoDBCollectionName"];
Run Code Online (Sandbox Code Playgroud)

然后尝试写数据

_database.GetCollection<dynamic>(_collectionName).InsertOne(data);
Run Code Online (Sandbox Code Playgroud)

它因错误而失败-

在使用CompositeServerSelector {Selectors = MongoDB.Driver.MongoClient + AreSessionsSupportedServerSelector,LatencyLimitingServerSelector {AllowedLatencyRange = 00:00:00.0150000}}选择服务器的30000毫秒后发生超时。群集状态的客户端视图为{ClusterId:“ 1”,ConnectionMode:“ ReplicaSet”,类型:“ ReplicaSet”,状态:“ Disconnected”,服务器:[{ServerId:“ {ClusterId:1,端点:”未指定/ botframeworkcosmos。 documents.azure.com:10255“}”,端点:“ Unspecified / botframeworkcosmos.documents.azure.com:10255”,状态:“ Disconnected”,类型:“ Unknown”,HeartbeatException:“ MongoDB.Driver.MongoConnectionException:异常---> System.Net.Internals,打开服务器连接时发生。

我尝试了此解决方案-使用CompositeServerSelector选择服务器30000ms后发生超时,但是它不起作用。

我还尝试过设置这样的SSL策略来配置客户端-

_mongoDbConnectionString = configuration["MongoDBConnectionString"];
_databaseName = configuration["MongoDBName"];
MongoClientSettings settings = MongoClientSettings.FromUrl(
  new MongoUrl(_mongoDbConnectionString)
);
settings.SslSettings =
  new SslSettings() { EnabledSslProtocols = SslProtocols.Tls12 };
_client = new MongoClient(settings);
_database = _client.GetDatabase(_databaseName);
_collectionName = configuration["MongoDBCollectionName"];
Run Code Online (Sandbox Code Playgroud)

我仍然遇到相同的错误。奇怪的是,相同的代码,昨天都正常工作。

更新 我删除了数据库并创建了一个新数据库。还是同样的问题。

知道可能是什么问题吗?

use*_*450 1

我有同样的错误消息(A timeout occured after 30000msUnspecified提到过)。这是因为我公司的防火墙阻止了 Cosmos Mongo 端口上的出站连接,例如 TCP 10255。

我通过暂时在我们公司网络之外运行代码来测试这一点,并且错误消失了(我验证了当我在公司网络之外再次重新运行它时,它仍然失败)。

因此,添加网络防火墙规则以允许到 TCP 端口 10255 的出站连接应该可以解决此问题。