加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – MongoDB,C#,QueryFailure标志不是master而slaveO

发布时间:2020-12-16 03:29:51 所属栏目:asp.Net 来源:网络整理
导读:我有一个网站已经运行了好几个月,现在,突然间,没有任何作用.该站点使用MVC 5完成,并使用MongoDB进行存储. 我最好的猜测是MongoDB主机正在搞乱,这导致了问题,但…… 我该怎么做以避免将来出现这个问题?我必须改变一些设置吗? 这是错误和堆栈跟踪: QueryFai
我有一个网站已经运行了好几个月,现在,突然间,没有任何作用.该站点使用MVC 5完成,并使用MongoDB进行存储.

我最好的猜测是MongoDB主机正在搞乱,这导致了问题,但……

我该怎么做以避免将来出现这个问题?我必须改变一些设置吗?

这是错误和堆栈跟踪:

QueryFailure flag was not master and slaveOk=false (response was { “$err” : “not master and slaveOk=false”,“code” : 13435 }).

at MongoDB.Driver.Internal.MongoReplyMessage1.ReadHeaderFrom(BsonBuffer buffer)
at MongoDB.Driver.Internal.MongoReplyMessage
1.ReadFrom(BsonBuffer buffer)
at MongoDB.Driver.Internal.MongoConnection.ReceiveMessage[TDocument](BsonBinaryReaderSettings readerSettings,IBsonSerializer serializer,IBsonSerializationOptions serializationOptions)
at MongoDB.Driver.Operations.QueryOperation1.GetFirstBatch(IConnectionProvider connectionProvider)
at MongoDB.Driver.Operations.QueryOperation
1.Execute(IConnectionProvider connectionProvider)
at System.Linq.Buffer1..ctor(IEnumerable1 source)
at System.Linq.OrderedEnumerable1.<GetEnumerator>d__0.MoveNext()
at System.Linq.Enumerable.<TakeIterator>d__3a
1.MoveNext()
at System.Collections.Generic.List1..ctor(IEnumerable1 collection)
at System.Linq.Enumerable.ToList[TSource](IEnumerable1 source)
at ScaleModellingCentral.Web.UI.Controllers.HomeController.Read()
at lambda_method(Closure,ControllerBase,Object[] )
at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext,IDictionary
2 parameters)
at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext,ActionDescriptor actionDescriptor,IDictionary2 parameters)
at System.Web.Mvc.Async.AsyncControllerActionInvoker.<BeginInvokeSynchronousActionMethod>b__39(IAsyncResult asyncResult,ActionInvocation innerInvokeState)
at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult
2.CallEndDelegate(IAsyncResult asyncResult)
at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.b__3d()
at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.b__3f()
at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass33.b__32(IAsyncResult asyncResult)
at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass21.<>c__DisplayClass2b.b__1c()
at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass21.b__1e(IAsyncResult asyncResult)

解决方法

这是一个引发问题的托管问题.

我的主服务器/分片有问题,因此,正如预期的那样,辅助服务器成为新的主服务器,然后一切都失败了.

快速解决方法是使用“?slaveOk = true”将连接字符串作为后缀.固定阅读.写作仍然失败.

所以真正的问题是我只在连接字符串中输入(初始)主服务器,因此(C#)驱动程序不知道有两个分片.

相反,如果我已经编写了正确的连接字符串,那么该站点会有一些失败的请求,然后驱动程序将切换到新的主要而不是继续使用失败的,现在是次要的碎片.

<add name="MongoDB" connectionString="mongodb://<username>:<password>@<server1>:<port1>,<server2>:<port2>/<dbname>" />

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读