Не удалось найти элемент конечной точки по умолчанию - 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 ]

2 голосов
/ 01 августа 2011

Здравствуйте, я столкнулся с той же проблемой, но лучшее решение - это позволить .NET настроить вашу конфигурацию на стороне клиента. Я обнаружил, что когда я добавляю ссылку на службу со строкой запроса http: /namespace/service.svc? Wsdl = wsdl0, она НЕ создает конечные точки конфигурации на стороне клиента. Но когда я удаляю? Wsdl-wsdl0 и использую только URL http: /namespace/service.svc, он создает конфигурацию конечной точки в файле конфигурации клиента. для краткого удаления "? WSDL = WSDL0".

1 голос
/ 23 декабря 2011

Решением для меня было удалить имя конечной точки из атрибута имени конечной точки в клиенте web.config это позволило прокси использовать

ChannelFactory<TService> _channelFactory = new ChannelFactory<TService>("");

занял весь день, чтобы потренироваться. Кроме того, имя контракта было неверным после того, как это исправление было на месте, хотя оно было неверным, когда появилась первоначальная ошибка. Двойная, а затем тройная проверка на наличие контракта с именами людей !! атрибут: Ian

1 голос
/ 30 октября 2014

У меня была эта ошибка, когда я ссылался на Контракт в элементе файла конфигурации без оператора глобальной области действия.

т.е.

<endpoint contract="global::MyNamepsace.IMyContract" .../>

работает, но

<endpoint contract="MyNamepsace.IMyContract" .../>

выдает ошибку «Не удалось найти элемент конечной точки по умолчанию, который ссылается на контракт».

Сборка, содержащая MyNamepsace.IMyContract, находится в сборке, отличной от основного приложения, поэтому это может объяснить необходимость использования разрешения глобальной области действия.

1 голос
/ 08 июля 2010

Хорошо. Мой случай был немного другим, но наконец я нашел решение для этого: У меня есть Console.EXE -> DLL -> Вызов WS1 -> DLL -> Вызов WS2

У меня были и конфигурации сервисной модели WS1, и WS2 в Console.EXE.config в соответствии с рекомендациями. - не решил проблему.

Но это все равно не работало, пока я не добавил WebReference WS2 к WS1, также , и не только к DLL, которая фактически создает и вызывает прокси WS2.

1 голос
/ 14 мая 2014

Позвольте мне добавить еще одну вещь для поиска. ( ответ Тома Хейя уже ссылается на него, но я хочу быть точным)

Мой web.config файл имеет следующее определение:

<protocolMapping>
    <add binding="basicHttpsBinding" scheme="https" />
</protocolMapping>

Я уже использовал basicHttpsBinding для одной ссылки, но затем я добавил новую ссылку, которая требовала basicHttpBinding (нет). Все, что мне нужно было сделать, это добавить это к моему protocolMapping следующим образом:

<protocolMapping>
    <add binding="basicHttpBinding" scheme="http" />
    <add binding="basicHttpsBinding" scheme="https" />
</protocolMapping>

Как правильно указывает L.R. , это должно быть определено в нужных местах. Для меня это означало один в файле app.config моего модульного теста, а также один в файле web.config основного сервисного проекта.

1 голос
/ 07 мая 2010

Кажется, есть несколько способов создать / исправить эту проблему. Для меня продукт CRM, который я использую, был написан на нативном коде и может вызывать мою DLL-библиотеку .NET, но я сталкиваюсь с информацией о конфигурации, которая должна быть в / над основным приложением. Для меня приложение CRM - это не .NET, поэтому мне пришлось поместить его в мой файл machine.config (а не туда, где я хочу). Кроме того, поскольку моя компания использует Websense, мне было трудно даже добавить ссылку на сервис из-за проблемы 407 Proxy Authentication Required, которая требовала изменения в machine.cong.

Прокси-решение:

Чтобы справка службы WCF работала, мне пришлось скопировать информацию из app.config моей DLL в основной конфигурационный файл приложения (но для меня это был machine.config). И мне также пришлось скопировать информацию о конечной точке в тот же файл. Как только я это сделал, он начал работать на меня.

1 голос
/ 04 ноября 2011

У меня была такая же проблема
Я использовал настольное приложение и использовал веб-службу Global Weather

Я удалил сервисную ссылку и добавил веб-ссылку, и проблема решена Спасибо

1 голос
/ 15 апреля 2010

Эта ошибка может возникать, если вы вызываете службу в библиотеке классов и вызываете библиотеку классов из другого проекта.

1 голос
/ 21 сентября 2016

Я получил ту же ошибку, и я попробовал кое-что, но не сработало, чем я заметил, что мой «контракт» не был одинаковым для целых проектов, я изменил контракт так же, как и для всех проектов внутри решения, и чем он работал. Это проект А

<client>
    <endpoint address="https://xxxxxxxx" binding="basicHttpBinding" bindingConfiguration="basic" contract="ServiceReference.IIntegrationService" name="basic" />
</client>

Проект B:

<client>
    <endpoint address="xxxxxxxxxxxxx" binding="basicHttpBinding" bindingConfiguration="basic" contract="ServiceReference1.IIntegrationService" name="basic" />
</client>

Наконец я сменил оба на:

<client>
    <endpoint address="https://xxxxxxxxxxx" binding="basicHttpBinding" bindingConfiguration="basic" contract="MyServiceReferrence.IIntegrationService" name="basic" />
</client>
0 голосов
/ 10 апреля 2018

В моем случае я ссылался на этот сервис из рамочного проекта. Как только я скопировал раздел в конфигурацию основного запускаемого проекта, проблема была решена.

...