2015-06-15 3 views
1

У меня есть приложение для веб-службы 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. 

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

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

+0

Не Google, прочитайте первый: _ "более чем одна конфигурация конечной точки для этого контракта был найден" _. У вашего клиента настроены две конечные точки, которые ссылаются на один и тот же контракт. – CodeCaster

ответ

0

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

Например:

var svcClientObj = new CustomWebSvcClient("BasicHttpBinding_ICustomWebSvc_OverHttp"); 
+0

Если у вас настроено более одного привязки, и вам нужен только один, вам нужно удалить остальные. Ваше предложение - обходной путь для другой проблемы. – CodeCaster

+0

@CodeCaster: в большинстве случаев вы, скорее всего, правы. Однако мы должны предположить, что есть некоторые законные причины для множественных привязок, иначе Microsoft не построила бы вышеупомянутую перегрузку конструктора. Возможно, программная подстановка основана на текущей среде. –

+0

_ «мы должны предположить, что существуют некоторые законные причины наличия нескольких привязок» _ - есть, но маловероятны для случая OP. – CodeCaster

Смежные вопросы