オブジェクト (JSON でシリアル化) を格納するために ServiceStack.Redis を使用するサービスを取得しました。HTTP リクエストごとに更新されるキーがあります。フローは単純です。キーの値を取得し、リストに逆シリアル化し、項目を追加/削除し、変更されたリストを Redis に書き戻します。
最近、問題に気付きました - 一部のキーが破損します (そのため、デシリアライズできません)。どうしてか分かりません。
例外は言うType definitions should start with a '{', expecting seralized type X, got string starting with: Y at ServiceStack.Text.Common.DeserializeTypeRefJson.StringToType(Type type, String strType, EmptyCtorDelegate ctorFn, Dictionary'2 typeAccessorMap
。
私は他の回答を読みました-それらのほとんどは、別のコンピューターからJSONデータを取得するか、それがどのように構築されたかを制御できないことを意味します. でもやるよ。
ほとんどのプロパティは単純な int で、その他は DateTime です。
私が持っている理論は 1 つだけです。マルチスレッドが関係しています。ただし、その場合は「last-write-wins」にする必要があり、破損は発生しません。他の誰かがその行動を見ましたか?
Redis 2.8.9 で ServiceStack 3.9.71 (3.x シリーズの最新リリース) を使用しています。.NET 4.5 Web アプリケーションは Windows でホストされ、Redis サーバーは Linux でホストされています。