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的消息。