title: Serialize JSON using ObjectContent issue
body: <p>I wrote a HTTP client library which is used by one of our existing process. It sends a post request with a JSON content in the body. The code that populates the request content and the object itself look like below.</p>
  
  <pre><code>… 
          HttpRequestMessage httpMessage = new HttpRequestMessage(HttpMethod.Post, "http://localhost");
          MyWireObject request = new MyWireObject()
          {
              Email = "user@test.com",
              Document = JToken.Parse(@"{""content"": ""data"", ""content2"": ""data2""}")
          };
          httpMessage.Content = new ObjectContent(typeof(MyWireObject), request, new JsonMediaTypeFormatter());
          //httpMessage.Content = new StringContent(JToken.FromObject(request).ToString(), Encoding.UTF8, "application/json");
  
          var content = httpMessage.Content;
          string jsonContent = content.ReadAsStringAsync().Result;
  …
  
  public class MyWireObject
  {
      [JsonProperty(PropertyName = "Email")]
      public string Email
      {
          get; set;
      }
  
      [JsonProperty(PropertyName = "Document")]
      public JToken Document
      {
          get; set;
      }
  }
  </code></pre>
  
  <p>When I use the client library with a standalone exe I wrote, it serialize the JSON just fine. But when I integrate it with the existing process, the result (which is captured in jsonContent) looks something like this:</p>
  
  <pre><code>{"Email":"user@test.com","Document":{"content":[],"content2":[]} }
  </code></pre>
  
  <p>Basically, all the values of the JToken field are lost. If I use StringContent instead of ObjectContent, as in the commented line, it works.</p>
  
  <p>One difference I could think of between my standalone exe and the existing process is that the process runs under network service account. Is this due to account permission? Or am I using it wrong? Or is it due to some known bug in .NET or Newtonsoft.Json.Linq?</p>
  
  <p>Thanks.</p>