Подтвердить что ты не робот

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

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

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

    Ошибка HTTP: не удалось загрузить файл POST '/WcfService7/Service1.svc на сервере localhost (415)

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

Любые объяснения? Благодаря

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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