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)
我仍然遇到相同的错误。奇怪的是,相同的代码,昨天都正常工作。
更新 我删除了数据库并创建了一个新数据库。还是同样的问题。
知道可能是什么问题吗?
我有同样的错误消息(A timeout occured after 30000ms也Unspecified提到过)。这是因为我公司的防火墙阻止了 Cosmos Mongo 端口上的出站连接,例如 TCP 10255。
我通过暂时在我们公司网络之外运行代码来测试这一点,并且错误消失了(我验证了当我在公司网络之外再次重新运行它时,它仍然失败)。
因此,添加网络防火墙规则以允许到 TCP 端口 10255 的出站连接应该可以解决此问题。
| 归档时间: |
|
| 查看次数: |
1013 次 |
| 最近记录: |