Here is the Put call (note: I have done this the traditional non Microsoft API way as well, same result).
response = httpClient.Put(uriTemplate, contentType, CreateContentFromObject(obj));
Then I debug into the service which ends up showing the following:

Here is my object
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.Xml.Serialization.XmlTypeAttribute(TypeName = "Dog", AnonymousType = true, Namespace = "http://schemas.datacontract.org/2004/07/DowCorning.BusinessObjects")]
[System.Xml.Serialization.XmlRootAttribute(DataType = "Dog", Namespace = "http://schemas.datacontract.org/2004/07/DowCorning.BusinessObjects", IsNullable = false)]
public class Dog
{
public string FurColor { get; set; }
public int Weight { get; set; }
public string Temperment { get; set; }
public string Tricks { get; set; }
public string Breed { get; set; }
}
here is my contract
[OperationContract(Name = "http://www.company.com/dog")]
[WebInvoke(ResponseFormat = WebMessageFormat.Xml, UriTemplate = "dog", Method = "PUT")]
Dog Doggy(Dog updateDog);
Any help on figuring out why the data loss is occuring would be greatly appreciated.
NOTE: If I execute the PUT through fiddler, there is no issue…
This was a serialization issue
I utilized the [Order] attributes on my data member and this resolved my issue.