在我们的群集上执行故障转移时,在应用程序成功使用新选择的主节点之前,每次(但仅一次)抛出以下 EndOfStreamException .

我使用2.5.0的.NET驱动程序,并在连接字符串中提供副本集名称:

var url = MongoUrl.Create("mongodb://<dbuser>:<dbpassword>@ds012345-a0.mlab.com:56789,ds012345-a1.mlab.com:56790/<dbname>?replicaSet=rs-ds012345");

var client = new MongoClient(new MongoClientSettings()
{
    Servers = url.Servers,
    Credentials = credentials
});

例外:

MongoDB.Driver.MongoConnectionException:从服务器接收消息时发生异常 . ---> System.IO.EndOfStreamException:尝试读取流的末尾 . 在MongoDB.Driver.Core.Misc.StreamExtensionMethods.d__2.MoveNext()---从抛出异常的上一个位置的堆栈跟踪结束---在System.Runtime的System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()处 . MongoDB.Driver.Core.Connections.BinaryConnection.d__51.MoveNext()---内部异常堆栈跟踪的结束---在MongoDB.Driver.Core.Connections.BinaryConnection.d__51上的CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务) . MoveNext()---抛出异常的先前位置的堆栈跟踪结束---在MongoDB.Driver的System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)的System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()处.Core.Connections.BinaryConnection.d__52.MoveNext()---抛出异常的前一个位置的堆栈跟踪结束---在System.Runtime.CompilerServices.TaskAwaiter的System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()处 . HandleNonSu MongoDB.Driver.Core.Connections.BinaryConnection.d__54.MoveNext()中的ccessAndDebuggerNotification(任务任务)---抛出异常的前一个位置的堆栈跟踪结束---在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()在MongoDB.Driver.Core.WireProtocol.CommandWireProtocol1的System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务) . <ExecuteAsync> d__11.MoveNext()---从抛出异常的上一个位置开始的堆栈跟踪结束---在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()处于MongoDB.Driver.Core.Servers.Server.ServerChannel的System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务) . <ExecuteProtocolAsync> d__261.MoveNext()---从抛出异常的先前位置开始的堆栈跟踪结束---在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification的System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()处(任务任务)MongoDB.Driver.Core.Operations.CommandOperationBase1 . <ExecuteProtocolAsync> d__29.MoveNext()---从抛出异常的上一个位置开始的堆栈跟踪结束---在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw ()处于MongoDB.Driver.Core.Operations.ReadCommandOperation1.d__2.MoveNext()的System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)---从抛出异常的上一个位置开始的堆栈跟踪结束--- at MongoDB.Driver.Core.Operations.FindCommandOperation1的System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中的System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() . <ExecuteAsync> d__111.MoveNext()---堆栈结束来自抛出异常的先前位置的跟踪---在MongoDB的System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)的System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()处.Driver.Core.Operations.FindOperation1.d__111.MoveNext()---抛出异常的前一个位置的堆栈跟踪结束---在System.Runtime.CompilerServices上的System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()处 . MongoDB.Driver.OperationExecutor.d__11.MoveNext()中的TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)---从抛出异常的上一个位置的堆栈跟踪结束---在系统的System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()处MongoDB.Driver.MongoCollectionImpl1.d__601.MoveNext()中的.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)---在抛出异常的前一个位置的堆栈跟踪结束---在System.Runtime.ExceptionServices.ExceptionDispatchInfo . 在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)处抛出()MongoDB.Driver.IAsyncCursorSourceExtensions . <ToListAsync> d__161.MoveNext()---从抛出异常的先前位置开始的堆栈跟踪结束---在System.Runtime.CompilerServices上的System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()处 . TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)