Problem deserializing guids

151 views
Skip to first unread message

Jesús López

unread,
Sep 25, 2012, 6:20:07 AM9/25/12
to rav...@googlegroups.com
Hello,
 
I need to deserialize an object  with guid properties insite a Put trigger, but it seems that Raven doesn't like it very much, it complains with OutOfRangeException.
 
This code throws OutOfRangeException:
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Raven.Abstractions.Extensions;
using Raven.Bundles.UpdateCascade;
using Raven.Json.Linq;
namespace CannotDeserialize
{
 public class Foo
 {
  public Guid Guid { get; set; }
 }
 class Program
 {
  static void Main(string[] args)
  {
   var foo1 = new Foo { Guid = Guid.NewGuid() };
   
   RavenJObject doc = RavenJObject.FromObject(foo1);
   // this fails with OutOfRangeException
   var foo2 = doc.JsonDeserialization<Foo>();
  }
 }
}
 
Exception details:
 
 
System.ArgumentOutOfRangeException was unhandled
  Message=Unexpected JTokenType.
Actual value was Guid.
Parameter name: Type
  Source=Raven.Abstractions
  ParamName=Type
  StackTrace:
       at Raven.Json.Linq.RavenJTokenReader.GetJsonTokenType(RavenJToken token) in c:\Builds\RavenDB-Unstable-v1.2\Raven.Abstractions\Json\Linq\RavenJTokenReader.cs:line 421
       at Raven.Json.Linq.RavenJTokenReader.<ReadRavenJToken>d__0.MoveNext() in c:\Builds\RavenDB-Unstable-v1.2\Raven.Abstractions\Json\Linq\RavenJTokenReader.cs:line 370
       at Raven.Json.Linq.RavenJTokenReader.<ReadRavenJToken>d__0.MoveNext() in c:\Builds\RavenDB-Unstable-v1.2\Raven.Abstractions\Json\Linq\RavenJTokenReader.cs:line 390
       at Raven.Json.Linq.RavenJTokenReader.Read() in c:\Builds\RavenDB-Unstable-v1.2\Raven.Abstractions\Json\Linq\RavenJTokenReader.cs:line 359
       at Raven.Imports.Newtonsoft.Json.Serialization.JsonSerializerInternalReader.ReadForType(JsonReader reader, JsonContract contract, Boolean hasConverter) in c:\Builds\RavenDB-Unstable-v1.2\Imports\Newtonsoft.Json\Src\Newtonsoft.Json\Serialization\JsonSerializerInternalReader.cs:line 1236
       at Raven.Imports.Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateObject(Object newObject, JsonReader reader, JsonObjectContract contract, JsonProperty member, String id) in c:\Builds\RavenDB-Unstable-v1.2\Imports\Newtonsoft.Json\Src\Newtonsoft.Json\Serialization\JsonSerializerInternalReader.cs:line 1361
       at Raven.Imports.Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue) in c:\Builds\RavenDB-Unstable-v1.2\Imports\Newtonsoft.Json\Src\Newtonsoft.Json\Serialization\JsonSerializerInternalReader.cs:line 359
       at Raven.Imports.Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue) in c:\Builds\RavenDB-Unstable-v1.2\Imports\Newtonsoft.Json\Src\Newtonsoft.Json\Serialization\JsonSerializerInternalReader.cs:line 229
       at Raven.Imports.Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent) in c:\Builds\RavenDB-Unstable-v1.2\Imports\Newtonsoft.Json\Src\Newtonsoft.Json\Serialization\JsonSerializerInternalReader.cs:line 152
       at Raven.Imports.Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType) in c:\Builds\RavenDB-Unstable-v1.2\Imports\Newtonsoft.Json\Src\Newtonsoft.Json\JsonSerializer.cs:line 546
       at Raven.Imports.Newtonsoft.Json.JsonSerializer.Deserialize(JsonReader reader, Type objectType) in c:\Builds\RavenDB-Unstable-v1.2\Imports\Newtonsoft.Json\Src\Newtonsoft.Json\JsonSerializer.cs:line 512
       at Raven.Abstractions.Extensions.JsonExtensions.JsonDeserialization[T](RavenJObject self) in c:\Builds\RavenDB-Unstable-v1.2\Raven.Abstractions\Extensions\JsonExtensions.cs:line 83
       at CannotDeserialize.Program.Main(String[] args) in C:\GitHubRepositories\UpdateCascadeBundle\CannotDeserialize\Program.cs:line 26
       at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
       at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
       at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Threading.ThreadHelper.ThreadStart()
  InnerException:
 
 

Oren Eini (Ayende Rahien)

unread,
Sep 25, 2012, 7:03:23 AM9/25/12
to rav...@googlegroups.com
Will be fixed in the next build.

Jesús López

unread,
Sep 25, 2012, 8:21:29 AM9/25/12
to rav...@googlegroups.com
Thank you. When will be the next build? 

Oren Eini (Ayende Rahien)

unread,
Sep 25, 2012, 8:30:07 AM9/25/12
to rav...@googlegroups.com
In an hour or so

Jesús López

unread,
Sep 25, 2012, 8:41:26 AM9/25/12
to rav...@googlegroups.com
This is the fastest bug fix I've even seen! :-)

Oren Eini (Ayende Rahien)

unread,
Sep 25, 2012, 8:45:39 AM9/25/12
to rav...@googlegroups.com
I am sorry, head over to  http://ravendb.net/download  and get 2095 unstable.
That would have your fix.

Jesús López

unread,
Sep 25, 2012, 9:52:22 AM9/25/12
to rav...@googlegroups.com
Thank you.
 
Is there the nuget package as well? I'm using the nuget package.

Jesús López

unread,
Sep 25, 2012, 9:56:47 AM9/25/12
to rav...@googlegroups.com
Ok, got it. Packages updated.
Reply all
Reply to author
Forward
0 new messages