Что такое привязка WCF по умолчанию?

Я несколько дней боролся с этой проблемой, изучая много чего по привязкам в процессе. Однако меня озадачивает одна вещь: различные ссылки (см. this или , например,) явно указывают "По умолчанию , Проект WCF создается с использованием WsHttpBinding ", но я не вижу этого. Вот что я делаю:

  1. Откройте Visual Studio 2010 и выберите New Project / Visual C # / WCF Service Application.
  2. Не трогайте ничего внутри кода, установите локальный URL-адрес IIS для службы (скажем, http://localhost/WcfService7 )
  3. Откройте soapUI и выберите File / New Soap UI Project / введите URL-адрес только что созданного wsdl: http://localhost/WcfService7/Service1.svc?wsdl, не касаясь других опций
  4. Свойства интерфейса: Версия SOAP = SOAP 1.1, Binding = "BasicHttpBinding_IService1" (хотя это просто имя, это чертовски подсказка)
  5. Откройте Altova XmlSpy и выберите SOAP / Создать новый запрос SOAP / введите URL-адрес wsdl / выберите любую операцию
  6. SOAP / Изменить параметры запроса SOAP / Убедитесь, что установлен флажок «Отправить как SOAP + XML (SOAP 1.2)»
  7. SOAP / Отправить запрос на сервер: я получаю сообщения об ошибках

    Ошибка HTTP: не удалось выполнить POST-файл «/WcfService7/Service1.svc» на сервере «localhost» (415)

    Ошибка отправки данных мыла в HTTP-ошибку http://localhost/WcfService7/Service1.svc: не удалось выполнить POST-файл '/WcfService7/Service1.svc' на сервере '10 .51.0.108 '(415)

Есть объяснения? Спасибо


person Piddu    schedule 07.06.2011    source источник


Ответы (2)


При размещении службы WCF в IIS (с использованием шаблона проекта приложения службы WCF) с файлом .svc по умолчанию (без изменения его фабрики узла службы) привязка по умолчанию - basicHttpBinding. Если вы хотите изменить привязку по умолчанию на wsHttpBinding, вы должны использовать:

<protocolMapping>
    <add scheme="http" binding="wsHttpBinding"/>
</protocolMapping>

В файле конфигурации вашей службы, но это не решит вашу проблему, потому что вам не нужен wsHttpBinding, и, насколько я помню, Altova XmlSpy не может отправить действительный запрос для wsHttpBinding, потому что он поддерживает только базовый стек SOAP без протоколов WS- *.

person Ladislav Mrnka    schedule 07.06.2011

По умолчанию используется базовая привязка с использованием SOAP 1.1.

Вот почему вы получаете сообщение об ошибке, отправляя его как SOAP 1.2.

person Shiraz Bhaiji    schedule 07.06.2011