C#mongo db驱动程序随机无法连接到db

C#mongo db驱动程序随机无法连接到db,c#,mongodb,C#,Mongodb,我有一个控制台应用程序,通过C#mongo驱动程序在单独的线程中调用mongo db。连接池限制为10,连接字符串为:mongodb+srv://login:pass@地址/测试?retryWrites=true&w=多数&连接=复制集 在我启动控制台应用程序的一半时间里,它会在超时30秒后下降。当我重新启动应用程序时,它将以50%的概率正常工作。如果第一次操作失败,任何其他操作也会失败。如果第一个还可以,其他任何一个都可以 例外情况: MongoDB.Driver.MongoClient+是会

我有一个控制台应用程序,通过C#mongo驱动程序在单独的线程中调用mongo db。连接池限制为10,连接字符串为:mongodb+srv://login:pass@地址/测试?retryWrites=true&w=多数&连接=复制集

在我启动控制台应用程序的一半时间里,它会在超时30秒后下降。当我重新启动应用程序时,它将以50%的概率正常工作。如果第一次操作失败,任何其他操作也会失败。如果第一个还可以,其他任何一个都可以

例外情况:

MongoDB.Driver.MongoClient+是会话支持的服务器选择器, LatencyLimitingServerSelector{AllowedLatencyRange=00:00:00.0150000 } }. 群集状态的客户端视图为{ClusterId:“1”,ConnectionMode :“ReplicaSet”,类型:“ReplicaSet”,状态:“Disconnected”,服务器: [],DnsMonitorException:“DnsClient.DnsResponseException:未处理 异常-->System.IndexOutOfRangeException:无法读取字节277, 超出范围。位于DnsClient.DnsDatagramReader.ReadByte()处 DnsClient.DnsDatagramReader.ReadLabels()位于 DnsClient.DnsDatagramReader.ReadQuestionQueryString()位于 DnsClient.DnsRecordFactory.ReadRecordInfo()位于 DnsClient.DnsMessageHandler.GetResponseMessage(ArraySegment
1
DnsClient.DnsUdpMessageHandler.Query(IPEndPoint)上的responseData
服务器,DnsRequestMessage请求,TimeSpan超时)位于
DnsClient.LookupClient.ResolveQuery(IReadOnlyCollection
1服务器, DnsMessageHandler处理程序,DnsRequestMessage请求,布尔值 useCache,LookupClientAudit continueAudit)--内部 异常堆栈跟踪---在 DnsClient.LookupClient.ResolveQuery(IReadOnlyCollection
1服务器,
DnsMessageHandler处理程序,DnsRequestMessage请求,布尔值
在以下位置使用缓存、查找clientaudit continueAudit)
DnsClient.LookupClient.QueryInternal(IReadOnlyCollection
1服务器, DnsQuestion问题,布尔值useCache)位于 DnsClient.LookupClient.Query(字符串查询、查询类型、查询类型、, QueryClass QueryClass)在 MongoDB.Driver.Core.Misc.DnsClientWrapper.ResolveSrvRecords(字符串 服务,取消令牌(取消令牌)位于 MongoDB.Driver.Core.Clusters.DnsMonitor.Monitor()“}.”

此异常最初是在此调用堆栈中引发的: MongoDB.Driver.Core.Clusters.Cluster.ThrowTimeoutException(MongoDB.Driver.Core.Clusters.ServerSelectors.IServerSelector, MongoDB.Driver.Core.Clusters.ClusterDescription) MongoDB.Driver.Core.Clusters.Cluster.WaitForDescriptionChangedHelper.HandleCompletedTask(System.Threading.Tasks.Task) MongoDB.Driver.Core.Clusters.Cluster.WaitForDescriptionChangedAsync(MongoDB.Driver.Core.Clusters.ServerSelectors.IServerSelector, MongoDB.Driver.Core.Clusters.ClusterDescription, System.Threading.Tasks.Task,System.TimeSpan, System.Threading.CancellationToken) System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()异常 System.Runtime.CompilerServices.TaskWaiter.ThrowForNonSuccess(System.Threading.Tasks.Task) MongoDB.Driver.Core.Clusters.Cluster.SelectServerAsync(MongoDB.Driver.Core.Clusters.ServerSelectors.IServerSelector, System.Threading.CancellationToken) System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()异常 System.Runtime.CompilerServices.TaskWaiter.ThrowForNonSuccess(System.Threading.Tasks.Task) System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task) ... [调用堆栈被截断]

内部:

使用选择服务器30000ms后发生超时 复合服务器选择器{选择器= MongoDB.Driver.MongoClient+是会话支持的服务器选择器, LatencyLimitingServerSelector{AllowedLatencyRange=00:00:00.0150000 } }. 群集状态的客户端视图为{ClusterId:“1”,ConnectionMode :“ReplicaSet”,类型:“ReplicaSet”,状态:“Disconnected”,服务器: [],DnsMonitorException:“DnsClient.DnsResponseException:未处理 异常-->System.IndexOutOfRangeException:无法读取字节277, 超出范围。位于DnsClient.DnsDatagramReader.ReadByte()处 DnsClient.DnsDatagramReader.ReadLabels()位于 DnsClient.DnsDatagramReader.ReadQuestionQueryString()位于 DnsClient.DnsRecordFactory.ReadRecordInfo()位于 DnsClient.DnsMessageHandler.GetResponseMessage(ArraySegment
1
DnsClient.DnsUdpMessageHandler.Query(IPEndPoint)上的responseData
服务器,DnsRequestMessage请求,TimeSpan超时)位于
DnsClient.LookupClient.ResolveQuery(IReadOnlyCollection
1服务器, DnsMessageHandler处理程序,DnsRequestMessage请求,布尔值 useCache,LookupClientAudit continueAudit)--内部 异常堆栈跟踪---在 DnsClient.LookupClient.ResolveQuery(IReadOnlyCollection
1服务器,
DnsMessageHandler处理程序,DnsRequestMessage请求,布尔值
在以下位置使用缓存、查找clientaudit continueAudit)
DnsClient.LookupClient.QueryInternal(IReadOnlyCollection
1服务器, DnsQuestion问题,布尔值useCache)位于 DnsClient.LookupClient.Query(字符串查询、查询类型、查询类型、, QueryClass QueryClass)在 MongoDB.Driver.Core.Misc.DnsClientWrapper.ResolveSrvRecords(字符串 服务,取消令牌(取消令牌)位于 MongoDB.Driver.Core.Clusters.DnsMonitor.Monitor()“}


我问我们的NodeJS开发人员,他回答说他没有这样的问题。有人遇到过这个问题吗?

我也得到了前一天的确切错误。我不确定确切的问题,但它肯定与我使用的网络有关。我通过将我的开发机器连接到手机的热点进行了测试,结果成功了。但当我再次切换到宽带连接时,它失败了

希望它能帮助别人

我还提出了一个关于mongodb支持的bug。这是你的电话号码

编辑:


通过将“DnsClient”nuget软件包升级到1.3.0版,最终解决了这个问题。

您是否尝试过使用ip地址而不是服务器名称来