首页 > 解决方案 > 使用 mongodb.driver 2.10.3 连接到 mongodb 服务器时出错

问题描述

我尝试为我的集群使用 mongodb 连接方法,但出现超时错误。集群有 3 个分片(00、01、02),根据我的 mongo 仪表板,它们都很健康。我还可以看到在主分片上注册了读取操作。无论我运行什么查询,我都会得到相同的超时异常。

var client = new MongoClient("mongodb+srv://bugbeeb:*******@csharptest-yzm6y.mongodb.net/test?retryWrites=true&w=majority");
var database = client.GetDatabase("test");
database.ListCollectionNames().ToList();

未处理的异常。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/csharptest- shard-00-00-yzm6y.mongodb.net:27017" }",端点:“未指定/csharptest-shard-00-00-yzm6y.mongodb.net:27017”,状态:“断开连接”,类型:“未知” , HeartbeatException: "MongoDB.Driver.MongoConnectionException: 打开与服务器的连接时发生异常。---> MongoDB.Driver.MongoConnectionException:从服务器接收消息时发生异常。---> System.IO.EndOfStreamException:试图读取流的末尾。在 MongoDB.Driver.Core.Misc.StreamExtensionMethods.ReadBytesAsync(Stream stream, Byte[] buffer, Int32 offset, Int32 count, TimeSpan timeout, CancellationToken cancelToken) 在 MongoDB.Driver.Core.Connections.BinaryConnection.ReceiveBufferAsync() ---内部异常堆栈跟踪结束 --- 在 MongoDB.Driver.Core.Connections.BinaryConnection.ReceiveBufferAsync(Int32 responseTo, CancellationToken cancelToken) 在 MongoDB.Driver.Core.Connections 的 MongoDB.Driver.Core.Connections.BinaryConnection.ReceiveBufferAsync() .BinaryConnection.ReceiveMessageAsync(Int32 responseTo, IMessageEncoderSelector encoderSelector,1.ExecuteAsync(IConnection connection, CancellationToken cancellationToken) at MongoDB.Driver.Core.Connections.IsMasterHelper.GetResultAsync(IConnection connection, CommandWireProtocol1 isMasterProtocol, CancellationToken cancelToken) at MongoDB.Driver.Core.Connections.ConnectionInitializer.InitializeConnectionAsync(IConnection connection, CancellationToken cancelToken)
在 MongoDB.Driver.Core.Connections.BinaryConnection.OpenHelperAsync(CancellationToken cancelToken) --- 内部异常堆栈跟踪的结束 --- 在 MongoDB.Driver.Core 的 MongoDB.Driver.Core.Connections.BinaryConnection.OpenHelperAsync(CancellationToken cancelToken) .Servers.ServerMonitor.HeartbeatAsync(CancellationToken cancelToken)", LastUpdateTimestamp: "2020-05-05T01:54:47.5568045Z" }, { ServerId: "{ ClusterId: 1, EndPoint: "Unspecified/csharptest-shard-00-01- yzm6y.mongodb.net:27017" }",端点:“未指定/csharptest-shard-00-01-yzm6y.mongodb.net:27017”,状态:“断开连接”,类型:“未知”,HeartbeatException:“MongoDB. Driver.MongoConnectionException:打开与服务器的连接时发生异常。---> MongoDB.Driver.MongoConnectionException:从服务器接收消息时发生异常。---> System.IO.EndOfStreamException:试图读取流的末尾。在 MongoDB.Driver.Core.Misc.StreamExtensionMethods.ReadBytesAsync(Stream stream, Byte[] buffer, Int32 offset, Int32 count, TimeSpan timeout, CancellationToken cancelToken) 在 MongoDB.Driver.Core.Connections.BinaryConnection.ReceiveBufferAsync() ---内部异常堆栈跟踪结束 --- 在 MongoDB.Driver.Core.Connections.BinaryConnection.ReceiveBufferAsync(Int32 responseTo, CancellationToken cancelToken) 在 MongoDB.Driver.Core.Connections 的 MongoDB.Driver.Core.Connections.BinaryConnection.ReceiveBufferAsync() .BinaryConnection.ReceiveMessageAsync(Int32 responseTo, IMessageEncoderSelector encoderSelector,1.ExecuteAsync(IConnection connection, CancellationToken cancellationToken) at MongoDB.Driver.Core.Connections.IsMasterHelper.GetResultAsync(IConnection connection, CommandWireProtocol1 isMasterProtocol, CancellationToken cancelToken) at MongoDB.Driver.Core.Connections.ConnectionInitializer.InitializeConnectionAsync(IConnection connection, CancellationToken cancelToken)
在 MongoDB.Driver.Core.Connections.BinaryConnection.OpenHelperAsync(CancellationToken cancelToken) --- 内部异常堆栈跟踪结束 --- 在 MongoDB.Driver.Core 的 MongoDB.Driver.Core.Connections.BinaryConnection.OpenHelperAsync(CancellationToken cancelToken) .Servers.ServerMonitor.HeartbeatAsync(CancellationToken cancelToken)", LastUpdateTimestamp: "2020-05-05T01:54:47.5411460Z" }, { ServerId: "{ ClusterId : 1, EndPoint : "Unspecified/csharptest-shard-00-02- yzm6y.mongodb.net:27017" }",端点:“未指定/csharptest-shard-00-02-yzm6y.mongodb.net:27017”,状态:“断开连接”,类型:“未知”,HeartbeatException:“MongoDB。 Driver.MongoConnectionException:打开与服务器的连接时发生异常。---> MongoDB.Driver.MongoConnectionException:从服务器接收消息时发生异常。---> System.IO.EndOfStreamException:试图读取流的末尾。在 MongoDB.Driver.Core.Misc.StreamExtensionMethods.ReadBytesAsync(Stream stream, Byte[] buffer, Int32 offset, Int32 count, TimeSpan timeout, CancellationToken cancelToken) 在 MongoDB.Driver.Core.Connections.BinaryConnection.ReceiveBufferAsync() ---内部异常堆栈跟踪结束 --- 在 MongoDB.Driver.Core.Connections.BinaryConnection.ReceiveBufferAsync(Int32 responseTo, CancellationToken cancelToken) 在 MongoDB.Driver.Core.Connections 的 MongoDB.Driver.Core.Connections.BinaryConnection.ReceiveBufferAsync() .BinaryConnection.ReceiveMessageAsync(Int32 responseTo, IMessageEncoderSelector encoderSelector,1.ExecuteAsync(IConnection connection, CancellationToken cancellationToken) at MongoDB.Driver.Core.Connections.IsMasterHelper.GetResultAsync(IConnection connection, CommandWireProtocol1 isMasterProtocol, CancellationToken cancelToken) at MongoDB.Driver.Core.Connections.ConnectionInitializer.InitializeConnectionAsync(IConnection connection, CancellationToken cancelToken)
在 MongoDB.Driver.Core.Connections.BinaryConnection.OpenHelperAsync(CancellationToken cancelToken) --- 内部异常堆栈跟踪的结束 --- 在 MongoDB.Driver.Core 的 MongoDB.Driver.Core.Connections.BinaryConnection.OpenHelperAsync(CancellationToken cancelToken) .Servers.ServerMonitor.HeartbeatAsync(CancellationToken cancelToken)", LastUpdateTimestamp: "2020-05-05T01:54:47.5159634Z" }] }. at MongoDB.Driver.Core.Clusters.Cluster.ThrowTimeoutException(IServerSelector selector, ClusterDescription description) at MongoDB.Driver.Core.Clusters.Cluster.WaitForDescriptionChangedHelper.HandleCompletedTask(Task completedTask) 在 MongoDB.Driver.Core.Clusters.Cluster.WaitForDescriptionChanged(IServerSelector 选择器, ClusterDescription 描述, Task descriptionChangedTask,TimeSpan 超时,CancellationToken cancelToken) 在 MongoDB.Driver.Core.Clusters.Cluster.SelectServer(IServerSelector 选择器,CancellationToken cancelToken) 在 MongoDB.Driver.MongoClient.AreSessionsSupportedAfterServerSelection(CancellationToken cancelToken) 在 MongoDB.Driver.MongoClient.AreSessionsSupported(CancellationToken cancelToken) 在MongoDB.Driver.MongoClient.StartImplicitSession(CancellationToken cancelToken) 在 MongoDB.Driver.OperationExecutor.StartImplicitSession(CancellationToken cancelToken) 在 MongoDB.Driver.MongoDatabaseImpl.UsingImplicitSession[TResult](Func`2 func, CancellationToken cancelToken) 在 MongoDB.Driver.MongoDatabaseImpl。 MongoTest.Program 中的 ListCollectionNames(ListCollectionNamesOptions options, CancellationToken cancelToken)。C:\Users\bugbe\Documents\VSCode\Ch01\hello\Program.cs 中的 Main(String[] args):第 17 行

标签: c#mongodb

解决方案


推荐阅读