Json raven 3.5客户端错误



保存到Raven数据库时,我们会定期收到以下错误。客户端和数据库是v3.5。到目前为止的解决方案是重新启动服务器,然后事情似乎就稳定下来了。用户可以转到另一个服务器,然后返回到站点并检索保存的内容。然而,当我们在服务器上看到1个这样的错误时,服务器会开始报告其中的100个。我们无法在QA中重现这一点。所以我倾向于加载,或者我们的Raven会话没有正确关闭。

调用Raven OpenSessionAsync()作为创建类的点

IAsyncDocumentSession

public async Task<bool> SaveChangesAsync()
{
using (_session)
{
await _session.SaveChangesAsync();
}
return true;
}

这是我们代码中在保存时启动错误的区域,我们是否也应该做更多的事情?

消息:状态为Property的Token PropertyName将导致无效的JSON对象。路径"。Raven.Imports.Newtonsoft.Json.JsonWriter.AutoComplete(JsonToken标记BeingWritten),位于C:\Builds\RavenDB-Stable-3.5\Imports\Newtonsoft.Json\Src\NewtonsoftJson\JsonWriter.cs:779C:\Builds\RavenDB-Stable-3.5\Raven.Abstractions\Json\Linq\RavenJTokenWriter.cs:51中的Raven.Json.Linq.RavenJTokenWriter.WritePropertyName(字符串名称)Raven.Imports.Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject(JsonWriter编写器、对象值、JsonObjectContract约定、JsonProperty成员、JsonContainerContract集合contract、JsonPropertycontainerProperty),位于C:\Builds\RavenDB-Stable-3.5\Imports\NewtonsoftJson\Src\Newtonsoft.Json\Serialization\JsonSerialierInternalWriter.cs:428Raven.Imports.Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.Serialize(JsonWriter JsonWriter,Object value,Type objectType),位于C:\Builds\RavenDB-Stable-3.5\Imports\NewtonsoftJson\Src\Newtonsoft.Json\Serialization\JsonSerialierInternalWriter.cs:101Raven.Imports.Newtonsoft.Json.JsonSerializer.SerializeInternal(JsonWriter JsonWriter,Object value,Type objectType),位于C:\Builds\RavenDB-Stable-3.5\Imports\Newtonsoft.Json\Src\NewtonsoftJson\JsonSerializar.cs:949C:\Builds\RavenDB-Stable-3.5\Raven.Abstractions\Json\Linq\RavenJToken.cs:91中的Raven.Json.Linq.RavenJToken.FromObjectInternal(Object o,JsonSerializer-JsonSerializer)C:\Builds\RavenDB-Stable-3.5\Raven.Abstractions\Json\Linq\RavenJObject.cs:174中的Raven.Json.Linq.RavenJObject.FromObject(Object o,JsonSerializer-JsonSerializer)C:\Builds\RavenDB-Stable-3.5\Raven.Client.Lightweight\Document\EntityToJson.GetObjectAsJson(对象实体)C:\Builds\RavenDB-Stable-3.5\Raven.Client.Lightweight\Document\EntityToJson.cs:44中的Raven.Customer.Document.EntityToJson.ConvertEntityToJson(字符串键、对象实体、RavenJObject元数据)Raven.Client.Document.InMemoryDocumentSessionOperations.EntityChanged(对象实体,DocumentMetadata DocumentMetadata,IDictionary2 changes) in C:BuildsRavenDB-Stable-3.5Raven.Client.LightweightDocumentInMemoryDocumentSessionOperations.cs:1218 Raven.Client.Document.InMemoryDocumentSessionOperations.<PrepareForEntitiesPuts>b__110_0(KeyValuePair2对),位于C:\Builds\RavenDB-Stable-3.5\Raven.Customer.Lightweight\Document\InMemoryDocument SessionOperations:1025System.Linq.Enumerable+WhereEnumerableIterator1.MoveNext():55 System.Linq.Buffer1..ctor(IEnumerable1 source):114 System.Linq.Enumerable.ToArray[TSource](IEnumerable1源):20

C:\Builds\RavenDB-Stable-3.5\Raven.Client.Lightweight\Document\InMemoryDocumentSessionOperations.cs:1025中的Raven.Customer.Document.InMemoryDocumentSessionOperations.PrepareForEntitiesPuts(SaveChangesData结果)C:\Builds\RavenDB-Stable-3.5\Raven.Client.Lightweight\Document\InMemoryDocumentSessionOperations.cs:986中的Raven.Customer.Document.InMemoryDocumentSessionOperations.PrepareForSaveChanges()C:\Builds\RavenDB-Stable-3.5\Raven.Client.Lightweight\Document\Async\AsyncDocumentSession.cs:928中的Raven.Customer.Document.Anc.AncDocumentSession+d__73.MoveNext()System.Runtime.ExceptionServices.ExceptionDispatchInfo.Sthrow():12System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务):46

ApplicantCenter.Services.ApplicationService+d__9.MoveNext(),位于d:\a\1\s\Project\Services\ApplicationService_Helpers.cs:207System.Runtime.ExceptionServices.ExceptionDispatchInfo.Sthrow():12System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务):46

ApplicantCenter.Controllers.ApplicationController+d__10.MoveNext(),格式为d:\a\1\s\Project\Controllers\ApplicationController.cs:117System.Runtime.ExceptionServices.ExceptionDispatchInfo.Sthrow():12System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务):46System.Web.Mvc.Async.TaskAsyncActionDescriptor.EndExecute(IAsyncResult-asyncResult)System.Web.Mvc.Anc.AncControllerActionInvoker+<>c__DisplayClass8_0.b_1(IAsyncResult asyncResult)System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult-asyncResult)System.Web.Mvc.Anc.AncControllerActionInvoker+AncInvocationWithFilters.b__11_0():19System.Web.Mvc.Anc.AncControllerActionInvoker+AncInvocationWithFilters+<>c_DisplayClass11_1.b_2():134System.Web.Mvc.Anc.AncControllerActionInvoker+AncInvocationWithFilters+<>c_DisplayClass11_1.b_2():134System.Web.Mvc.Anc.AncControllerActionInvoker+AncInvocationWithFilters+<>c_DisplayClass11_1.b_2():134System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult-asyncResult)System.Web.Mvc.Anc.AncControllerActionInvoker+<>c__DisplayClass3_6.b_3()System.Web.Mvc.Anc.AncControllerActionInvoker+<>c__DisplayClass3_1.b_5(IAsyncResult asyncResult)

这里的问题是您正在处理可能被其他人使用的会话。将全局会话放入using块中,会话资源将在using块结束后被释放,使用相同全局会话的代码的其他部分将变为无效。

相关内容

最新更新