I do not know if this would cause this problem, but I would mark my similarly structured MessageContract up as follows:
- Using the [MessageHeader] attribute is enough on MessageHeader members.
- If the contract TestsResults is not a top level contract, I would mark it up as a DataContract with DataMember attributes only.
EDIT: 3. TestResult should also be a DataContract, with all members marked up with DataMember. Your enum must be marked up with the EnumMember attribute.
I hope this helps.