Использовал gSoap для вызовов методов WCF сервиса из unmanaged C++, работало если хостить в IIS ASP.NET. После того как захостил через ServiceHost в windows сервисе - работать перестало. Потратил кучу времени чтобы найти причину и решение.
Причина: сообщение не рутилось по HTTP заголовку SOAPAction, это можно видеть в SvcTraceViewer.exe, если тестировать сервис через WcfTestClient.exe, то все рутиться.
There are three ways to route a soap message to the correct operation:
1. Using the Http header SOAPAction (ASMX uses this one)
2. Using the addressing soap header (WCF uses this one by default)
3. Using the body element.
После долгой бестолковой возни с первыми двумя пунктами, решение пришло через третий пункт. У Microsoft есть сэмпл, как написать такой сервис. А вот еще правильная подсказка, от участника Jaap de Wolff.
Но и после всех этих приседаний мне еще пришлось наставить множественные атрибуты XmlSerializerFormat и перегенерить код gSoap клиента на использование SOAP 1.2.
На этом месте можно выдохнуть.
Причина: сообщение не рутилось по HTTP заголовку SOAPAction, это можно видеть в SvcTraceViewer.exe, если тестировать сервис через WcfTestClient.exe, то все рутиться.
There are three ways to route a soap message to the correct operation:
1. Using the Http header SOAPAction (ASMX uses this one)
2. Using the addressing soap header (WCF uses this one by default)
3. Using the body element.
После долгой бестолковой возни с первыми двумя пунктами, решение пришло через третий пункт. У Microsoft есть сэмпл, как написать такой сервис. А вот еще правильная подсказка, от участника Jaap de Wolff.
Но и после всех этих приседаний мне еще пришлось наставить множественные атрибуты XmlSerializerFormat и перегенерить код gSoap клиента на использование SOAP 1.2.
На этом месте можно выдохнуть.
Комментариев нет:
Отправить комментарий