Служба WCF для клиента gSOAP

Я получил запрос на создание Сервиса для обработки трафика от предварительно настроенного клиента.

В документации указано, что эта служба является службой SOAP, но позже я узнал, что протокол, используемый предварительно разработанным клиентом, - это gSOAP с использованием SOAP 1.2.

Проблема, которую я получаю, заключается в том, что при назначении привязки basicHttpBinding я получаю ошибку i Action '' not supported, поскольку клиент не отправляет заголовок SOAPAction (поскольку он не используется в SOAP 1.2), и если я установил привязку моей службы WCF с wsHttpBinfing Я получаю ошибку

HTTP/1.1 415 
Cannot process the message because the content type 'text/xml; charset=utf-8' 
was not the expected type 'application/soap+xml; charset=utf-8'.

Итак, в основном кажется, что клиент gSOAP, который они используют, отправляет структуру SOAP SOAP 1.2, но с Content-Type SOAP 1.1.

Мой вопрос в том, как заставить мою службу WCF обрабатывать запросы от клиента. (Клиент никак не может быть изменен)

Я пробовал настроить customBinding

<customBinding>
    <binding name="myCustomBinding">
      <textMessageEncoding messageVersion="Soap12" />
      <httpTransport/>
    </binding>
</customBinding>

с различными значениями messageVersion. Но мне еще предстоит найти комбинацию, которая работает.


person Dorana    schedule 14.11.2011    source источник


Ответы (1)


Решено путем создания настраиваемого диспетчера для сопоставления вызовов на основе SOAPBody.

Решение найдено в образцах Microsoft WCF.

Образцы найдены по адресу:

Примеры Windows Communication Foundation (WCF) и Windows Workflow Foundation (WF) для .NET Framework 4

Точный пример (в зависимости от папки, в которой установлены образцы)

Расширяемость \ Interop \ AdvancedDispatchByBody

person Dorana    schedule 22.11.2011
comment
Измените свой ответ и включите ссылку на образец, который помог. :) - person Tad Donaghe; 22.11.2011