Сериализация MessageContract с DCS

Есть ли способ заставить DataContractSerializer сериализовать [MessageContract] так же, как он появляется при передаче по SOAP?

У меня есть класс, который отображается в сети для вызова WCF следующим образом:

<TestRequest xmlns="http://webservices.test.com/ServiceTest/1.1">
  <Name>Just Me</Name>
</TestRequest>

При сериализации с помощью DCS это выглядит так:

<TestRequest xmlns:i="http://www.w3.org/2001/XMLSchema-instance" z:Id="1" xmlns:z="http://schemas.microsoft.com/2003/10/Serialization/" xmlns="http://schemas.datacontract.org/2004/07/ServiceTest">
  <_x003C_Name_x003E_k__BackingField z:Id="2">Just Me</_x003C_Name_x003E_k__BackingField>
</TestRequest>

Я убежден, что это несоответствие связано с тем, что мой класс помечен как контракт сообщения, а не контракт данных:

    [MessageContract]
    [Serializable]
    public class TestRequest
    {
        [MessageBodyMember]
        public string Name { get; set; }
    }

Есть ли способ заставить DCS сериализовать сообщения так же, как это делает WCF при создании сообщения SOAP?


person kurtaj    schedule 05.05.2010    source источник


Ответы (1)


Я предполагаю, что вы ищете суррогаты контракта данных. Кстати, вы можете использовать конструктор DataContractSerializer для установки пространства имен и корневого имени.

person danish    schedule 05.05.2010
comment
Суррогаты контракта данных — это не то, что мне нужно. Я хочу создать SOAP XML точно так же, как это делает WCF. - person kurtaj; 27.05.2010