Я соединяюсь со сторонней конечной точкой через 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
Скорее всего, у вас проблема с версией 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