Не удалось найти элемент конечной точки по умолчанию - PullRequest
348 голосов
/ 09 декабря 2008

Я добавил прокси в веб-сервис для решения VS2008 / .NET 3.5. При построении клиента .NET выдает эту ошибку:

Не удалось найти элемент конечной точки по умолчанию, который ссылается на контракт 'IMySOAPWebService' в разделе конфигурации клиента ServiceModel. Это может быть связано с тем, что для вашего приложения не найден файл конфигурации или элемент конечной точки, соответствующий этому контракту, не найден в элементе client.

Поиск этой ошибки говорит мне использовать полное пространство имен в контракте. Вот мой app.config с полным пространством имен:

<client>
  <endpoint address="http://192.168.100.87:7001/soap/IMySOAPWebService"
            binding="basicHttpBinding" bindingConfiguration="IMySOAPWebServicebinding"
            contract="Fusion.DataExchange.Workflows.IMySOAPWebService" name="IMySOAPWebServicePort" />
</client>

Я использую локальную XP (я упоминаю об этом, потому что в ряде хитов Google упоминается win2k3) App.config копируется в app.exe.config, так что это тоже не проблема.

Есть какие-нибудь подсказки?

Ответы [ 32 ]

7 голосов
/ 07 апреля 2009

У меня была такая же проблема, но изменение пространства имен контракта не сработало для меня. Поэтому я попробовал веб-ссылку в стиле .Net 2 вместо ссылки на службу .Net 3.5. Это сработало.

Чтобы использовать веб-ссылку в Visual Studio 2008, нажмите «Добавить ссылку на службу», затем нажмите «Дополнительно», когда появится диалоговое окно. В этом вы найдете опцию, которая позволит вам использовать веб-ссылку вместо сервисной ссылки.

6 голосов
/ 15 февраля 2012

Модульное тестирование небиблиотечного приложения, которое использует службу, может вызвать эту проблему.

Информация, введенная другими, устраняет первопричину этого. Если вы пытаетесь написать автоматизированные тестовые случаи, а тестируемый модуль фактически вызовет интерфейс сервиса, вам нужно добавить ссылку на сервис в тестовый проект. Это разновидность приложения, использующего библиотечный тип ошибок. Я не сразу понял это, потому что мой код, который использует интерфейс , не находится в библиотеке . Однако, когда тест фактически выполняется, он будет выполняться из тестовой сборки, а не тестируемой сборки.

Добавление сервисной ссылки в проект модульного тестирования решило мою проблему.

6 голосов
/ 23 сентября 2015

У меня есть ситуация, которая в модульном тесте. Я скопировал файл app.config в проект модульного тестирования. Таким образом, проект модульного тестирования также содержит информацию о конечной точке.

4 голосов
/ 22 сентября 2012

Я однажды столкнулся с этой проблемой. Это было потому, что я все еще разрабатывал интерфейс, который использует сервис WCF. Я настроил тестовое приложение и продолжил разработку. Затем в процессе разработки я изменил некоторые пространства имен сервисов. Поэтому я дважды проверил "system.serviceModel -> client -> endpoint -> contract" в web.config, чтобы соответствовать классу WCF. Тогда проблема решена.

3 голосов
/ 14 октября 2010

Просто для всех, у кого такая же проблема; Я написал модульный тест для моего метода, который пытался подключиться к моей службе. Он терпел неудачу с тем же исключением каждый раз - я понятия не имею, почему. Когда я запускал его из winform, он работал нормально.

3 голосов
/ 10 декабря 2008

Пространство имен в вашей конфигурации должно отражать остальную часть пути к пространству имен после пространства имен вашего клиента по умолчанию (как настроено в свойствах проекта). Основываясь на вашем опубликованном ответе, я предполагаю, что ваш клиент настроен на использование в пространстве имен Fusion.DataExchange.Workflows. Если вы переместили код клиента в другое пространство имен, вам потребуется обновить конфигурацию, чтобы она соответствовала оставшемуся пути к пространству имен.

2 голосов
/ 14 июня 2010

У меня та же проблема. Я использовал службу WCF в библиотеке классов и вызываю библиотеку классов из Windows Application project. Но я забыл изменить <system.serviceModel> В файле конфигурации Windows приложения Project тот же <system.serviceModel> файла приложения библиотеки классов.
решение: измените конфигурацию внешнего проекта так же, как конфигурацию wcf библиотеки классов.

2 голосов
/ 25 октября 2010

Если вы ссылаетесь на веб-сервис в своей библиотеке классов, вам нужно скопировать app.config в ваше приложение Windows или консольное приложение

решение: изменить конфигурацию внешнего проекта так же, как конфигурацию wcf библиотеки классов.

работал для меня

2 голосов
/ 30 августа 2012

В случае, если вы используете приложение WPF, использующее инфраструктуру PRISM, конфигурация должна существовать в вашем начальном проекте (то есть в проекте, где находится ваш загрузчик).

2 голосов
/ 11 июля 2011

Не помещайте строку объявления клиента службы в качестве поля класса, вместо этого создайте экземпляр для каждого метода, который используется в. Так что проблема будет исправлена. Если вы создаете экземпляр клиента службы как поле класса, тогда возникает ошибка времени разработки!

...