Почему я должен добавить ссылку на URL/service.svc, но тогда он создает привязку для URL/service.svc/soap?

Я подключаю решение к веб-сервису на основе WCF SOAP. URL находится в формате:

http://upload.pete.vls.com/api/hmlapi.svc

Однако, когда я добавляю ссылку, конфигурация выглядит следующим образом:

<client>
    <endpoint address="http://upload.pete.vls.com/api/HmlApi.svc/soap"
                    binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IHmlApi"
                    contract="ServiceReference1.IHmlApi" name="BasicHttpBinding_IHmlApi" />
</client>

Я не понимаю, почему, когда я добавляю ссылку с / soap / в конце, она не работает. Но когда я не добавляю его, функция "добавить ссылку" находит сервис и добавляет его с помощью / soap / в любом случае.

2 ответа

Решение

URL, который вы вводите (без soap часть) включает в себя информацию о том, какие виды услуг транспорта предлагаются. VS выбирает soap от этого, и сохраняя правильный адрес конечной точки в конфигурации.

Этот конечный URL не будет правильным для того, что запрашивается, когда вас попросят. Потому что он ожидает URL с информацией об услуге, а не фактическую конечную точку, которая в конечном итоге будет использоваться.

Потому что ваша конечная точка на сервере, вероятно, настроена так

<services>
  <service name="YourService">
    <endpoint name="mySOAPEndpoint" address="soap" binding="someHttpBinding" contract="IYourService" />
  </service>
</services>

Обратите внимание, что адресом является "мыло", которое является относительным путем после вашего URI службы (т. Е. После.svc). Если вы напишите address="", то ваш.svc URI будет таким же, как ваш адрес конечной точки.

Другие вопросы по тегам