1

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

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

IAsyncDocumentSession

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

return true;
}

这是我们代码中在保存时引发错误的区域,我们还应该做更多的事情吗?

消息:状态属性中的令牌属性名称将导致无效的 JSON 对象。小路 ''。Raven.Imports.Newtonsoft.Json.JsonWriter.AutoComplete(JsonToken tokenBeingWritten) 在 C:\Builds\RavenDB-Stable-3.5\Imports\Newtonsoft.Json\Src\Newtonsoft.Json\JsonWriter.cs:779 Raven.Json.Linq。 RavenJTokenWriter.WritePropertyName(String name) 在 C:\Builds\RavenDB-Stable-3.5\Raven.Abstractions\Json\Linq\RavenJTokenWriter.cs:51 Raven.Imports.Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject(JsonWriter writer, Object C:\Builds\RavenDB-Stable-3.5\Imports\Newtonsoft.Json\Src\Newtonsoft.Json\Serialization\JsonSerializerInternalWriter.cs:428 Raven.Imports.Newtonsoft 中的值、JsonObjectContract 合同、JsonProperty 成员、JsonContainerContract collectionContract、JsonProperty containerProperty) .Json.序列化。2 changes) in C:\Builds\RavenDB-Stable-3.5\Raven.Client.Lightweight\Document\InMemoryDocumentSessionOperations.cs:1218 Raven.Client.Document.InMemoryDocumentSessionOperations.<PrepareForEntitiesPuts>b__110_0(KeyValuePair2 对)在 C:\Builds\RavenDB-Stable-3.5\Raven.Client.Lightweight\Document\InMemoryDocumentSessionOperations.cs:1025 System.Linq.Enumerable+WhereEnumerableIterator 1.MoveNext():55 System.Linq.Buffer1..ctor(IEnumerable 1 source):114 System.Linq.Enumerable.ToArray[TSource](IEnumerable1 source):20

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

d:\a\1\s\Project\Services\ApplicationService_Helpers.cs:207 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw():12 System.Runtime.CompilerServices.TaskAwaiter 中的申请人Center.Services.ApplicationService+d__9.MoveNext() .HandleNonSuccessAndDebuggerNotification(任务任务):46

d:\a\1\s\Project\Controllers\ApplicationController.cs:117 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw():12 System.Runtime.CompilerServices.TaskAwaiter 中的申请人Center.Controllers.ApplicationController+d__10.MoveNext() .HandleNonSuccessAndDebuggerNotification(Task task):46 System.Web.Mvc.Async.TaskAsyncActionDescriptor.EndExecute(IAsyncResult asyncResult) System.Web.Mvc.Async.AsyncControllerActionInvoker+<>c__DisplayClass8_0.b__1(IAsyncResult asyncResult) System.Web.Mvc.Async.AsyncControllerActionInvoker .EndInvokeActionMethod(IAsyncResult asyncResult) System.Web.Mvc.Async.AsyncControllerActionInvoker+AsyncInvocationWithFilters.b__11_0():19 System.Web.Mvc.Async.AsyncControllerActionInvoker+AsyncInvocationWithFilters+<>c__DisplayClass11_1.b__2():134 System.Web.Mvc.Async .AsyncControllerActionInvoker+AsyncInvocationWithFilters+<>c__DisplayClass11_1.b__2():134 System.Web.Mvc.Async.AsyncControllerActionInvoker+AsyncInvocationWithFilters+<>c__DisplayClass11_1.b__2():134 System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult) System.Web .Mvc.Async.AsyncControllerActionInvoker+<>c__DisplayClass3_6.b__3() System.Web.Mvc.Async.AsyncControllerActionInvoker+<>c__DisplayClass3_1.b__5(IAsyncResult asyncResult)AsyncControllerActionInvoker+<>c__DisplayClass3_6.b__3() System.Web.Mvc.Async.AsyncControllerActionInvoker+<>c__DisplayClass3_1.b__5(IAsyncResult asyncResult)AsyncControllerActionInvoker+<>c__DisplayClass3_6.b__3() System.Web.Mvc.Async.AsyncControllerActionInvoker+<>c__DisplayClass3_1.b__5(IAsyncResult asyncResult)

4

1 回答 1

0

这里的问题是您正在处理可能被其他人使用的会话。你在 using 块内放了一个全局 _session,_session 资源将在 using 块结束后被释放,其他部分使用同一个全局 _session 的代码将失效。

于 2019-10-22T09:23:13.567 回答