У меня есть следующий сценарий соединения по протоколу WCF: Клиент WCF, использующий привязку basicHttp, общается со службой маршрутизации, которая перенаправляет запрос в службу, используя netTcp.
Клиент <-> basicHttpBinding (SOAP 1.1)
<-> Служба маршрутизатора <-> netTcpBinding (SOAP 1.2)
<-> Служба
Функциональность маршрутизации работает отлично, пока мы не предоставляем службу нашему клиенту C ++, который использует библиотеку gSOAP для передачи сообщений службе. Если клиент C ++ взаимодействует с Сервисом напрямую, вызов завершается успешно; однако, как только он пытается связаться через Службу маршрутизации, он терпит неудачу.
Служба получает перенаправленное сообщение, но выдает исключение, как только она пытается десериализовать сообщение. Сообщение об ошибке, возвращаемое службой, - System.ServiceModel.Dispatcher.NetDispatcherFaultException
, говорящее "The formatter threw an exception while trying to deserialize the message…"
Похоже, что проблема вызвана соединением протоколов. Если я не использую протоколирование мостов, то есть я использую basicHttp во всей цепочке вызовов, клиент C ++ (и маршрутизация сообщений) работает должным образом.
Я не могу понять, как решить эту проблему. Я понимаю, что служба маршрутизации предназначена для посредничества WCF-WCF, но проблема, по-видимому, изолирована только от вызовов, исходящих от клиента g ++ C ++. Я пытался использовать некоторые инструменты тестирования веб-сервисов (soapUI, soapSonar), чтобы посмотреть, смогу ли я воспроизвести проблему, но, похоже, они работают нормально.
Мы будем благодарны за любую помощь или руководство.
С уважением,
Стив