我在Azure中创建了一个Cosmos DB数据库,并使用Mongo。我已经创建了客户端并配置成这样-
_mongoDbConnectionString = configuration["MongoDBConnectionString"];
_databaseName = configuration["MongoDBName"];
_client = new MongoClient(_mongoDbConnectionString);
_database = _client.GetDatabase(_databaseName);
_collectionName = configuration["MongoDBCollectionName"];然后试着写数据-
_database.GetCollection<dynamic>(_collectionName).InsertOne(data);因为错误而失败-
在使用MongoDB.Driver.MongoClient+AreSessionsSupportedServerSelector,{ Selectors =CompositeServerSelector LatencyLimitingServerSelector{ AllowedLatencyRange = 00:00:00.0150000 }选择服务器后发生超时。群集状态的客户端视图是{ ClusterId:" 1“、ConnectionMode:"ReplicaSet”、Type:"ReplicaSet“、State:"Disconnected”、Servers:[{ ServerId:"{ ClusterId :1、EndPoint: EndPoint }“、EndPoint:"Unspecified/botframeworkcosmos.documents.azure.com:10255",State:"Disconnected”、Type:“Uniting”、HeartbeatException:"MongoDB.Driver.MongoConnectionException:打开到服务器的连接时发生的异常“。
我尝试过这个解决方案-- A timeout occured after 30000ms selecting a server using CompositeServerSelector,但没有奏效。
我也尝试过像这样设置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"];我还是会犯同样的错误。奇怪的是,同样的代码,昨天都起作用了。
更新我删除了数据库并创建了一个新的数据库。还是同样的问题。
知道会有什么问题吗?
发布于 2019-05-14 13:44:32
我有同样的错误消息(A timeout occured after 30000ms和Unspecified也提到了)。这是因为我公司的防火墙阻塞了Cosmos Mongo端口上的出站连接,例如TCP 10255。
我通过在公司网络之外临时运行代码来测试这个问题,并且错误消失了(我验证了当我再次运行它时,公司的网络内部仍然失败)。
因此,添加网络防火墙规则以允许到TCP端口10255的出站连接应该修复它。
发布于 2019-05-22 11:52:27
检查须考虑的事项:
https://stackoverflow.com/questions/53002562
复制相似问题