Я тестирую вызов службы на основе SOAP из клиентского приложения .net и сталкиваюсь с некоторыми странными проблемами с исчезающим заголовком SOAP.
Краткое объяснение настройки:
Я использовал WSDL, предоставленный поставщиком веб-сервиса, для создания моих прокси-объектов.В моем коде объявить экземпляр клиента службы, который я хочу вызвать.Создайте полезную нагрузку, необходимую для метода, и затем вызовите метод.
Я определил свой собственный инспектор, который записывает сообщение запроса в текстовый файл в функции BeforeSendRequest, чтобы я мог проверить, что отправляется.
Мой выходной файл содержит заголовок SOAP, определяющий вызываемое действие SOAP:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header>
<Action s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">urn:actionName</Action>
</s:Header>
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
Однако, когда я проверяю запрос в Fiddler, я вижу:
POST http://itk1:4848/syncsoap HTTP/1.1
Content-Type: text/xml; charset=utf-8
VsDebuggerCausalityData: uIDPo3+FD6fhly5OnM0GeeaNhJ8AAAAAqHE+abP1+EWcEPeRvh8Oj4EFi5tL0elHlKdqfGJg1AIACQAA
SOAPAction: "urn:actionName"
Host: itk1:4848
Content-Length: 9651
Expect: 100-continue
Connection: Keep-Alive
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body
Кажется, что мое действие было удалено из конверта SOAP и стало основным заголовком, поэтому, когда служба, которую я вызываю, получает запрос, она не может найти действие в ожидаемом месте.
В качестве теста яВместо этого я попытался создать базовый запрос с помощью WebRequest.Create () и опубликовать выходной файл, который я получил ранее из моего инспектора сообщений.Когда это происходит, Fiddler показывает, что заголовок и действие SOAP были сохранены в конверте SOAP.
Я полагаю, что WCF будет полезным и изменяет мой запрос для меня?Как я могу заставить его перестать портить моё сообщение и отправить его так, как оно было изначально построено?