Клиентской программе не удается подключиться к веб-серверу

У меня есть приложение веб-службы http://localhost:49804/Service1.asmx, и я могу успешно вызывать методы с помощью приложения C #.

Позже я разместил ту же веб-службу в IIS (http://localhost/MyFirstWebService/Service1.asmx) и я могу использовать его с веб-страницей (http put / get).

Теперь я обновил ссылку на веб-службу http://localhost/MyFirstWebService/Service1.asmx в моем приложении C #. . Теперь, если я вызываю тот же метод, я получаю исключение:

An endpoint configuration section for contract 'ServiceReference1.Service1Soap' could not be loaded because more than one endpoint configuration for that contract was found. Please indicate the preferred endpoint configuration section by name.

Я искал эту проблему в Google и понимаю, что мне нужно добавить клиентские и веб-привязки в мой файл web.config. Итак, я добавил часть ниже, но это не решает проблему.

  <system.serviceModel>
    <client>
    <endpoint address="http://192.168.1.3/MyFirstWebService/Service1.asmx" binding="basicHttpBinding"
              contract="ClassABC" bindingConfiguration ="httpBinding"
              name="BasicHttpBinding_IABC" />
  </client>
  </system.serviceModel> 

Похоже, я пропустил привязку в моем приложении веб-сервера? Как я могу решить эту проблему, любая ссылка или ссылки на то, с чего мне следует начать, или любой пример приложения будут большим подспорьем. Нужно ли мне что-то менять в моем веб-сервисе или изменений в файле web.config должно быть достаточно?


person Ashok    schedule 15.06.2015    source источник
comment
Не гуглите, сначала прочтите: найдено более одной конфигурации конечной точки для этого контракта. У вашего клиента настроены две конечные точки, которые ссылаются на один и тот же контракт.   -  person CodeCaster    schedule 15.06.2015


Ответы (1)


Если у вас есть более одной привязки внутри <configuration><system.serviceModel><bindings>, вам нужно выбрать одну по имени и передать ее конструктору вашего клиента веб-службы, чтобы устранить двусмысленность.

Например:

var svcClientObj = new CustomWebSvcClient("BasicHttpBinding_ICustomWebSvc_OverHttp");
person Special Sauce    schedule 15.06.2015
comment
Если у вас настроено несколько привязок и вам нужна только одна, вам нужно удалить остальные. Ваше предложение - это решение совершенно другой проблемы. - person CodeCaster; 15.06.2015
comment
@CodeCaster: скорее всего, вы правы. Однако мы должны предположить, что есть некоторые законные причины для наличия нескольких привязок, иначе Microsoft не построила бы вышеуказанную перегрузку конструктора. Возможна программная подмена в текущей среде. - person Special Sauce; 15.06.2015
comment
мы должны предположить, что есть некоторые законные причины для наличия нескольких привязок - они есть, но маловероятно для случая OP. - person CodeCaster; 15.06.2015