使用DCS进行MessageContract序列化

时间:2010-05-05 16:42:34

标签: c# datacontractserializer messagecontract

有没有办法让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消息时的方式相同?

1 个答案:

答案 0 :(得分:0)

我猜您正在寻找Data Contract Surrogates。顺便说一句,您可以使用DataContractSerializer的构造函数来设置命名空间和根名称。