Я внедряю службу WCF .NET, которая вызывается другой службой.
Мыльное сообщение, которое служба обратного вызова отправляет обратно, ниже
SOAP-сообщение
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<ns1:getAccountBalance soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="http://service.company.x.y">
<param0 xsi:type="xsd:string">123-K</param0>
<param1 xsi:type="xsd:string">551003</param1>
<param2 xsi:type="xsd:string">123</param2>
<param3 xsi:type="xsd:string">1231</param3>
<param4 xsi:type="xsd:string">ug</param4>
<param5 xsi:type="xsd:string">x</param5>
<param6 xsi:type="xsd:string">1.0</param6>
</ns1:getAccountBalance>
</soapenv:Body>
</soapenv:Envelope>
Контракт WCF на получение сообщений
[OperationContract(Action="")]
AccountEnquiryResponse getAccountBalance(String param0, String param1, String param2, String param3, String param4, String param5, String param6);
Служба реализации
[ServiceBehavior(Namespace = "http://service.company.x.y")]
public class MyService:IService
{
public AccountEnquiryResponse getAccountBalance(String param0, String param1, String param2, String param3, String param4, String param5, String param6)
{
return new AccountEnquiryResponse
Проблема
Когда обратный вызов возвращает, служба WCF не может десериализовать параметры сообщения SOAP - все они null
Мыльное сообщение, которое работает
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<getAccountBalance xmlns="http://service.company.x.y">
<param0>123</param0>
<param1>123</param1>
<param2>uid</param2>
<param3>pwd</param3>
<param4>en</param4>
<param5>ug</param5>
<param6>1.0</param6>
</getAccountBalance>
</s:Body>
</s:Envelope>
Мой вывод
Разница между сообщением SOAP, которое работает, и тем, которое не работает, заключается в свойствах soapenv: encodingStyle = "http://schemas.xmlsoap.org/soap/encoding/" и xsi: type =" xsd: string в параметрах и .NET не может десериализовать объект должным образом из-за них.
Это правда?
Что я могу сделать, чтобы решить эту проблему?
PS. служба, которая перезванивает мне, является сторонним приложением, написанным на JAVA, и я не могу контролировать формат сообщения, отправляемого обратно в мое приложение.
Пожалуйста, сообщите