gpt4 book ai didi

asp.net-mvc - MongoDB、C#、QueryFailure 标志不是 master 并且slaveOk=false

转载 作者:行者123 更新时间:2023-12-02 07:49:57 25 4
gpt4 key购买 nike

我有一个网站几个月来一直运行得很好,但现在突然间一切都不起作用了。该网站是使用 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>" />

关于asp.net-mvc - MongoDB、C#、QueryFailure 标志不是 master 并且slaveOk=false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28263904/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com