If you have a scenario that requires use of a MessageContract, (such as
placing user/password items in the SOAP header), you will need to
understand the the de/serialization engine that handles
MessageContract/MessageBodyMember/MessageHeaderMember does NOT respect
the KnownType attributes.
A possible work-around that works in
some situations is to duplicate the MessageContract attributes with
DataContract attributes as well. This only works if you are working
strictly with data items in the body of the message. Of course, this
only works on the side of an operation that does not access the SOAP
header (perhaps a response message).