У меня есть следующий сервис WCF
[ContractType(ContractKnownType.CORE)]
[ServiceContract(Namespace = WcfConstants.WcfNamespace), ServiceBehavior(Namespace = WcfConstants.WcfNamespace)]
[HostAsWebService]
[XmlSerializerFormat]
public class DeliveryWebService : IFactoryService
{
[OperationContract, Sessional]
public string InboundDelivery(MT_InboundDelivery MT_InboundDelivery)
{
var error = "";
try
{
... some code
}
}
}
Всякий раз, когда я делаю запрос со следующим SOAP-сообщением
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://www.MEScontrol.net/WebServices">
<soapenv:Header/>
<soapenv:Body>
<web:MT_InboundDelivery>
<web:HeaderDetails/>
</web:MT_InboundDelivery>
</soapenv:Body>
</soapenv:Envelope>
Я получаю ошибку
Ссылка на объект не установлена для экземпляра объекта
Если я добавлю узел «InboundDelivery» к сообщению, оно будет работать.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://www.MEScontrol.net/WebServices">
<soapenv:Header/>
<soapenv:Body>
<web:InboundDelivery>
<web:MT_InboundDelivery>
<web:HeaderDetails/>
</web:MT_InboundDelivery>
<web:InboundDelivery>
</soapenv:Body>
</soapenv:Envelope>
Однако я не могу изменить сообщение, так как оно отправлено сторонним приложением. Я попытался добавить свойства как [MessageContract (IsWrapped = true)] к моему сервису, но безуспешно. Я очень новичок в SOAP, поэтому любая помощь приветствуется. Спасибо!