c# - 在 WCF XML 序列化中创建自定义肥皂对象
问题描述
我正在尝试通过 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);
解决方案
让我们知道确切的错误信息。据我所见,它期望一个 listIds 数组需要创建一个名为 listids 的自定义 C# 类,并且它需要是 areStatusComplete 类的内部属性
public class areStatusComplete
{
public ListIds listIds {..}
}
推荐阅读
- amazon-web-services - AWS EC2 立即扩展?
- sql - Use WITH clause inside a stored procedure
- google-apps-script - 如何在 Google 表格中使用 App 脚本自动复制/粘贴数据
- google-app-maker - 我可以使用计算模型在 App maker 中制作这个简单的应用程序以进行演示吗?
- c++ - c++14 - Is this a good way to prepend a char on a string?
- spring - Spring - get field from list in model
- javascript - Move to next inpute field on keyup inside table
- java - 使用java将带有阿拉伯字符的html文件转换为pdf
- android - Firebase search query not working on android
- javascript - how to combine all yarn files with gulp