【发布时间】:2019-01-14 07:31:51
【问题描述】:
我正在尝试通过 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