在WCF XML序列化中创建自定义soap对象

问题描述 投票:0回答:1

我试图通过XML序列化从WCF创建一个SOAP对象,因为这个问题就像某些序列化不符合我预期的输出。我想创建一个相同的WSDL文件来支持我的旧客户端。

这就是我要求肥皂的要求:

<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <areStatusComplete xmlns="http://tempuri.org/">
      <listIds>
        <string>12258</string>
        <string>478526</string>
      </listIds>
    </areStatusComplete>
  </s:Body>

预期产出是:

 <soap:Body>
    <ns1:areStatusComplete xmlns:ns1="http://tempuri.org/">
      <listIds>88355</listIds>
      <listIds>88356</listIds>
    </ns1:areStatusComplete>
  </soap:Body>

数据契约的C#代码是:

[System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.7.2612.0")]
    [System.SerializableAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "")]
    [System.ServiceModel.MessageContractAttribute(WrapperName = "areStatusComplete", WrapperNamespace = "", IsWrapped = true)]
    public class areStatusComplete
    {
        [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "", Order = 0)]
        [System.Xml.Serialization.XmlElementAttribute("listIds", Form = System.Xml.Schema.XmlSchemaForm.Unqualified, IsNullable = true, Order = 1)]
        public string[] listIds { get; set; }


        [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "", Order = 1)]
        [System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
        public string system;

        [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "", Order = 2)]
        [System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
        public string user;

        public areStatusComplete ()
        {
        }

        public areStatusComplete (string[] listIds, string system, string user)
        {
            this.listIds = listIds;
            this.system = system;
            this.user = user;
        }
    }

服务合同代码:

[OperationContract]
        areStatusCompleteResponse areStatusComplete (string[] listIds, string system, string user);
c# .net wcf soap xml-serialization
1个回答
0
投票

让我们知道确切的错误消息。从我所看到的是期望一个listIds数组,需要创建名为listids的自定义C#类,并且这需要是areStatusComplete类的内部属性

public class areStatusComplete 
{
  public ListIds listIds {..}

}
© www.soinside.com 2019 - 2024. All rights reserved.