EventStore 和 RavenDB 持久性 JsonReaderException
Posted
技术标签:
【中文标题】EventStore 和 RavenDB 持久性 JsonReaderException【英文标题】:EventStore & RavenDB Persistence JsonReaderException 【发布时间】:2012-05-04 20:37:08 【问题描述】:尝试将JOliver's EventStore 与RavenDB 连接起来并遇到了障碍。 我在 Raven 中创建了一个名为 RavenEventStore 的新数据库。
以下是我的连线;
return Wireup.Init()
.UsingRavenPersistence("RavenEventStore")
.UsingAsynchronousDispatchScheduler()
.DispatchTo(new DelegateMessageDispatcher(DispatchCommit))
.Build();
当调用 Wireup.Init() 时,RavenDb 端出现此异常;
Url:“/indexes/RavenCommitByDate”Newtonsoft.Json.JsonReaderException:解析值时遇到意外字符:。第 1 行,位置 1。 在 Newtonsoft.Json.JsonTextReader.ParseValue(Char currentChar) 在 d:\Development\Releases\Json\Working\Src\Newtonsoft.Json\JsonTextReader.cs:line 699 在 d:\Development\Releases\Json\Working\Src\Newtonsoft.Json\JsonTextReader.cs:line 499 中的 Newtonsoft.Json.JsonTextReader.ReadInternal() 在 Newtonsoft.Json.Serialization.JsonSerializerInternalReader.ReadForType(JsonReader reader, Type t, JsonConverter propertyConverter) in d:\Development\Releases\Json\Working\Src\Newtonsoft.Json\Serialization\JsonSerializerInternalReader.cs:line 1072 在 Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType) in d:\Development\Releases\Json\Working\Src\Newtonsoft.Json\Serialization\JsonSerializerInternalReader.cs:line 118 在 c:\Builds\raven\Raven.Database\Extensions\HttpExtensions.cs:line 57 中的 Raven.Database.Extensions.HttpExtensions.ReadJsonObject[T](IHttpContext context) 在 c:\Builds\raven\Raven.Database\Server\Responders\Index.cs:line 64 中的 Raven.Database.Server.Responders.Index.Put(IHttpContext 上下文,字符串索引) 在 c:\Builds\raven\Raven.Database\Server\Responders\Index.cs:line 49 中的 Raven.Database.Server.Responders.Index.Respond(IHttpContext context) 在 c:\Builds\raven\Raven.Database\Server\HttpServer.cs:line 477 中的 Raven.Database.Server.HttpServer.DispatchRequest(IHttpContext ctx) 在 c:\Builds\raven\Raven.Database\Server\HttpServer.cs:line 259 中的 Raven.Database.Server.HttpServer.HandleActualRequest(IHttpContext ctx)
我也可以在 RavenDB 日志中看到异常;
Newtonsoft.Json.JsonReaderException: Unexpected character encountered while parsing value: . Line 1, position 1. at Newtonsoft.Json.JsonTextReader.ParseValue(Char currentChar) in d:\Development\Releases\Json\Working\Src\Newtonsoft.Json\JsonTextReader.cs:line 699 at Newtonsoft.Json.JsonTextReader.ReadInternal() in d:\Development\Releases\Json\Working\Src\Newtonsoft.Json\JsonTextReader.cs:line 499 at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.ReadForType(JsonReader reader, Type t, JsonConverter propertyConverter) in d:\Development\Releases\Json\Working\Src\Newtonsoft.Json\Serialization\JsonSerializerInternalReader.cs:line 1072 at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType) in d:\Development\Releases\Json\Working\Src\Newtonsoft.Json\Serialization\JsonSerializerInternalReader.cs:line 118 at Raven.Database.Extensions.HttpExtensions.ReadJsonObject[T](IHttpContext context) in c:\Builds\raven\Raven.Database\Extensions\HttpExtensions.cs:line 57 at Raven.Database.Server.Responders.Index.Put(IHttpContext context, String index) in c:\Builds\raven\Raven.Database\Server\Responders\Index.cs:line 64 at Raven.Database.Server.Responders.Index.Respond(IHttpContext context) in c:\Builds\raven\Raven.Database\Server\Responders\Index.cs:line 49 at Raven.Database.Server.HttpServer.DispatchRequest(IHttpContext ctx) in c:\Builds\raven\Raven.Database\Server\HttpServer.cs:line 477 at Raven.Database.Server.HttpServer.HandleActualRequest(IHttpContext ctx) in c:\Builds\raven\Raven.Database\Server\HttpServer.cs:line 259
我试图通过删除 UsingAsynchronousDispatchScheduler() 方法来消除所有可能性,并引发相同的错误。 我使用的代码严格来自此处的示例: https://github.com/joliver/EventStore/blob/master/doc/EventStore.Example/MainProgram.cs
有人经历过吗?在 Google 上也找不到任何东西。
【问题讨论】:
【参考方案1】:瑞恩, 您正在使用旧服务器(888 之前)和新客户端(888 或更高版本)
【讨论】:
完美。我使用的是 build 616。更新到 800 只是为了测试并且遇到了同样的问题,但随后按照建议采取了下一步到 888 并且问题得到了解决。【参考方案2】:您的问题可能与此类似: EventStore + RavenDB, not deserializing correct
此外,我肯定会建议使用 Oren 建议的针对 Raven 构建 888(或更高版本)的自定义构建,直到我可以针对更新版本的 Raven 发布新版本。
【讨论】:
按照 Ayende 的建议更新 RavenDb 并解决了问题。我目前正在使用 EventStore 版本 3.0.11326.44,一切似乎都很好。以上是关于EventStore 和 RavenDB 持久性 JsonReaderException的主要内容,如果未能解决你的问题,请参考以下文章
Prooph Eventstore (PDO) 和 Doctrine DBAL 导致多个连接
分享一个CQRS/ES架构中基于写文件的EventStore的设计思路