我正在编写一个 WCF 服务,它应该处理我无法控制的预定义 SOAP/XML 格式。
这是我公开的服务合同:
[OperationContract]
[WebInvoke(Method = "POST")]
bool SavePets(Pets Pets);
该服务期望的 SOAP 是:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<SavePets xmlns="http://tempuri.org">
<Pets>
<Dog>
<Name>Fido</Name>
</Dog>
<Dog>
<Name>Duke</Name>
</Dog>
<Cat>
<Name>Max</Name>
</Cat>
</Pets>
</SavePets>
</s:Body>
</s:Envelope>
但是,我需要删除方法名称 (SavePets) 或参数名称 (Pets),因此服务不需要它:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<Pets>
<Dog>
<Name>Fido</Name>
</Dog>
<Dog>
<Name>Duke</Name>
</Dog>
<Cat>
<Name>Max</Name>
</Cat>
</Pets>
</s:Body>
</s:Envelope>
我没有使用 DataContracts 或 MessageContracts。我的 Pets 类如下所示:
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.233")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = false, Namespace = "http://tempuri.org")]
[System.Xml.Serialization.XmlRootAttribute(Namespace = "http://tempuri.org", IsNullable = true)]
public partial class Pets
{...
}