-
Всем привет.
Есть веб-сервис, написан на D7. К нему подключаются клиенты, написанные на .NET CF версии не более 3.5. Есть тестовое приложение (WinForms), написано в 2008-й студии на FW 3.5.
После перевода проекта веб-сервиса на D2010 при подключении тестовым приложением получаем сообщение об ошибке{"Возможно несоответствие версии SOAP: непредвиденное пространство имен конверта
http://schemas.xmlsoap.org/wsdl/. Ожидается http://schemas.xmlsoap.org/soap/envelope/."}
Есть предположение, что в D2010 используется версия SOAP 1.2, в тестовом приложении версия SOAP 1.1.
Вопрос: можно ли заставить веб-сервис работать в D2010 на версии SOAP 1.1? Кому и что сказать надо?
В гугле пока находятся ответы на вопрос "как заставить клиентскую часть работать в такой-то версии SOAP", что мне не очень подходит. Но не лишает надежды на то, что и на мой вопрос есть ответ.
Заранее спасибо. -
Дополнение.
Возможно моя гипотеза не подтверждается. Я нашёл кусок кода, который генерирует пространство имён конверта.
Находится он в модуле InvokeRegistry, например в методе TSOAPHeader.SOAPToObject. Думаю, в остальных местах аналогичный код.
Ключевой моментSoapEnvelopeNamespaces[soSOAP12 in ObjConverter.GetOptions]
ЗдесьSSoapNamespace = 'http://schemas.xmlsoap.org/soap/envelope/'; { do not localize }
SSoap12Namespace = 'http://www.w3.org/2003/05/soap-envelope'; { do not localize }
SOAPEnvelopeNamespaces: array[Boolean] of string = (SSoapNamespace, SSoap12Namespace);
Моё тестовое приложение ожидало получить пространство имён SSoapNamespace, для этого в опциях не должно быть soSOAP12.
Диспетчер у меня, ожидаемо, HTTPSoapPascalInvoker, у него в опциях это отключено.
Что за пространство имён такое у меня возвращается, я вообще не понимаю. Временно кончились версии :( -
Хм. На самом деле, почему-то при вызове метода веб-сервиса из тестового приложения ему в ответ возвращается WSDL. Вопрос теперь ставится так: почему ему возвращается WSDL?
Как проверял: просто сохранил в файл содержимое Response.RawContent в методе procedure TMyWebModule.WebModuleAfterDispatch -
Возьми снифер и сравни обмен с веб сервисом на D7 и D2010.