Как Вы изменяете схему Конверта SOAP в WCF?

Я соединяюсь со сторонней конечной точкой через WCF, и у меня есть одна проблема. Схема для конверта SOAP, который сгенерирован WCF, не совместима с конечной точкой.

В настоящее время WCF генерирует это:

<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing">

Но это должно быть это:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" xmlns:a="http://www.w3.org/2005/08/addressing">

Я протестировал это в soapUI, чтобы подтвердить, что это - проблема, но как я могу управлять этим в WCF? Я использовал опцию Add Service Reference в Visual Studio для генерации сервиса.

Какие-либо идеи?

Заранее спасибо.

Andy

8
задан andypike 5 March 2010 в 11:25
поделиться

1 ответ

Скорее всего, у вас проблема с версией SOAP. Какую привязку вы используете ??

basicHttpBinding по умолчанию соответствует SOAP 1.1, а wsHttpBinding по умолчанию - SOAP 1.2

Это SOAP 1.1 (по умолчанию в basicHttpBinding):

<SOAP-ENV:Envelope
  xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
  SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">

в то время как это SOAP 1.2 (по умолчанию в wsHttpBinding):

<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">

Возможные решения:

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

или

2) вам необходимо создать свою собственную привязку и явно указать нужную вам версию SOAP

21
ответ дан 5 December 2019 в 07:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: