Другими словами: как изменить контракт на обслуживание wcf, чтобы удалить дополнительную обертку «message» из сообщения мыла (принять wsdl)?
Я создал службу WCF, контракт которой:
[ServiceContract(Namespace = "http://blabla/", Name = "DiagnosticApplication")]
public interface IReceiveApplication
{
[OperationContract]
string Test(XmlElement e);
}
Так что мой СЦ теперь принимает такие сообщения
<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: e уровень пропущен)
<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>
Ok. Я создал "wsdl" с нуля, в первую очередь с удаленными обертками сообщений, а затем сгенерировал образец контракта (cs). Я вижу, что сгенерированный код использует MessageContract.IsWrapperd = false рядом с сгенерированными классами сообщений, но я не могу изменить сгенерированный код, поэтому. Я должен как-то изменить контракт операции и попросить wcf генерировать для меня сообщения с правильным MessageContract.