Как изменить схему конверта SOAP в WCF? - PullRequest
7 голосов
/ 05 марта 2010

Я подключаюсь к сторонней конечной точке через 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

1 Ответ

19 голосов
/ 05 марта 2010

Скорее всего, у вас проблема с версией 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...