Служба WCF для клиента gSOAP - PullRequest
2 голосов
/ 14 ноября 2011

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

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

Проблема, с которой я сталкиваюсь, заключается в том, что при назначении привязки для basicHttpBinding я получаю ошибку i Action '' not supported, поскольку клиент не отправляет заголовок SOAPAction (так как он не используется в SOAP1.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-Тип SOAP 1.1

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

Я попытался настроить customBinding

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

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

1 Ответ

3 голосов
/ 22 ноября 2011

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

Решение найдено в примерах Microsoft WCF.

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

Образцы Windows Communication Foundation (WCF) и Windows Workflow Foundation (WF) для .NET Framework 4

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

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

...