如何在wcf服务中获取Soap Envelope属性值

时间:2016-03-05 11:43:12

标签: c# wcf object

如何在wcf服务中获取SOAP xml属性值?

  <ns3:NotifRQ Status="Commit" 
               xmlns:ns2="http://www.dddd.com/df/dd/" 
               xmlns:ns3="http://www.dd.org/OTA/">

      <ns3:rev>dfdfkkl</ns3:rev>
      <ns3:change>dfdfkkl</ns3:change>
  </ns3:NotifRQ>

这是我现在用于数据合同的代码:

[DataContract(Name = "NotifRQ", Namespace = "http://www.dd.org/OTA/")]
public class NotifRQ
{
    [DataMember(Name = "Status")]
    public string ResStatus;
}

1 个答案:

答案 0 :(得分:0)

您的Status属性需要是NotifRQ类的字段或属性,您需要指示WCF使用不太理想的XmlSerializer而不是DatacontractSerializer,如here所述。您可以使用班级上的XmlSerializerFormat属性来实现这一目标。

现在,您可以将XmlAttribute应用于类的字段或属性,以获取或设置xml元素上属性的值。

按如下方式创建和注释您的课程:

[DataContract(Namespace="http://www.dd.org/OTA/")]
[XmlSerializerFormat]
public class NotifRQ 
{

   [DataMember, XmlAttribute] 
   public string Status="Commit";

   [DataMember]
   public string  rev;

   [DataMember]
   public string  change;
}

上面的课程将编写并阅读以下电子格式:

<?xml version="1.0" encoding="utf-16"?>
<NotifRQ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
         Status="Commit">
  <rev>foo</rev>
</NotifRQ>