1
换句话说:如何更改wcf服务合约以从soap消息中删除附加的“消息”包装(采用wsdl)?WCF:如何强制执行MessageContractAttribute.IsWrapped = false生成?
我已创建WCF服务,这契约是:
[ServiceContract(Namespace = "http://blabla/", Name = "DiagnosticApplication")]
public interface IReceiveApplication
{
[OperationContract]
string Test(XmlElement e);
}
所以我的SC现在接受这样的消息
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:epr="http://blabla/">
<soapenv:Header/>
<soapenv:Body>
<epr:Test>
<epr:e>
<anyxml/>
</epr:e>
</epr:Test>
</soapenv:Body>
</soapenv:Envelope>
但传统的客户端发送这样的消息(消息的EPR:电子水平遗漏)
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:epr="http://blabla/">
<soapenv:Header/>
<soapenv:Body>
<epr:Test>
<anyxml/>
</epr:Test>
</soapenv:Body>
</soapenv:Envelope>
好的。我从零创建了“wsdl”,首先删除了消息包装器,然后生成了示例合同(cs)。我可以看到生成的代码在生成的消息类附近使用MessageContract.IsWrapperd = false,但我无法更改生成的代码,所以。我应该以某种方式更改操作合同,并要求wcf为我生成具有正确的MessageContract的消息。