由于使用C#驱动程序(v1.11.0)切换到Mongo SSL连接,因此出现此错误消息时,我们一直在生产中出现间歇性错误:
身份验证失败,因为远程方已关闭传输流。
我们的连接字符串采用以下格式:
mongodb://user:pass@host1:port1,host2:port2,host3:port3/dbname?ssl=true&authsource=admin&sslVerifyCertificate=true&replicaSet=replicaSetName
数据库托管在MongoDB ATLAS产品中,不确定这是否会产生任何影响。
我们自己的类之前的堆栈跟踪是:
在System.Net.Security.SslState.StartReadFrame(Byte []缓冲区,Int32 readBytes,AsyncProtocolRequest asyncRequest)
在System.Net.Security.SslState.StartReceiveBlob(Byte []缓冲区,AsyncProtocolRequest asyncRequest)
在System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst,Byte [] buffer,AsyncProtocolRequest asyncRequest)
在MongoDB.Driver.Internal.MongoConnection.Open()的System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult)中 在MongoDB.Driver.Internal.MongoConnection.SendMessage(BsonBuffer buffer,Int32 requestId)
在MongoDB.Driver.Internal.MongoConnection.SendMessage(MongoRequestMessage消息)
在MongoDB.Driver.Operations.QueryOperation`1.GetFirstBatch(IConnectionProvider connectionProvider)
在MongoDB.Driver.Operations.QueryOperation`1.Execute(IConnectionProvider connectionProvider)
在System.Linq.Enumerable.ToDictionary [TSource,TKey,TElement](IEnumerable`1 source,Func`2 keySelector,Func`2 elementSelector,IEqualityComparer`1 comparer)
我们已升级到.NET 4.61并在我们的全局asax应用程序启动中放置以下行:
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
由于我们无法在本地进行调试,因此无法查看其他内容并且难以排除故障...任何帮助都非常感谢!