Я добавил прокси в веб-сервис для решения 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 local (я упоминаю об этом, потому что в ряде хитов Google упоминается win2k3). App.config копируется в app.exe.config, так что это тоже не проблема.
Есть какие-нибудь подсказки?
wcf
.net-3.5
wcf-binding
endpoint
edosoft
источник
источник
Ответы:
«Эта ошибка может возникнуть, если вы вызываете службу в библиотеке классов и вызываете библиотеку классов из другого проекта».
В этом случае вам нужно будет включить параметры конфигурации WS в основные проекты app.config, если это winapp или web.config, если это веб-приложение. Это способ пойти даже с PRISM и WPF / Silverlight.
источник
ServiceReferences.ClientConfig
это происходит в каталоге проекта. Копирование<bindings>
и<client>
элементов из файла в моей библиотеке моего основного приложения (которые ранее были пустыми) есть вещи работать.Я решил эту проблему (думаю, как могли предположить другие), создавая экземпляры адресов привязки и конечной точки самостоятельно - потому что я не хотел добавлять новые настройки в файлы конфигурации (это замена некоторого существующего библиотечного кода, который широко используется, и ранее использовал более старую ссылку на веб-сервис и т. д.), и поэтому я хотел иметь возможность оставить это без добавления новых настроек конфигурации везде.
редактировать
Если вы используете https, вам нужно использовать,
BasicHttpsBinding
а неBasicHttpBinding
.источник
Протестировав несколько вариантов, я наконец решил это с помощью
т.е. без полного пространства имен в конфиге. По какой-то причине полное имя не удалось решить правильно
источник
var proxy = new ExternalServices.ServiceClient("MyServiceEndpoint");
это сработало, когда я добавил пространство имен к контракту:contract="ExternalServices.IMyService"
У меня была такая же проблема. Оказывается, для веб-ссылки вы должны указать URL-адрес в качестве первого параметра для конструктора:
Для веб-ссылки СЕРВИСА нового стиля вы должны указать имя, которое относится к записи конечной точки в конфигурации:
С соответствующей записью в
Web.config
илиApp.config
:Довольно чертовски сложно удалить туннельное видение «это работало в более старой программе» ...
источник
У меня была такая ситуация, когда я имел
Теперь у проекта Consumer были все связанные настройки конфигурации в
<system.serviceModel>
Tag моего app.config, и он по-прежнему выдавал ту же ошибку, что и выше.Все, что я сделал, это добавил один и тот же тег
<system.serviceModel>
в файл app.config моего основного проекта, и, наконец, мы были в порядке.Реальная проблема, так как в моем случае это было чтение неправильного файла конфигурации. Вместо app.config потребителя он ссылался на конфигурацию основного проекта. Мне понадобилось два часа, чтобы понять это.
источник
<system.serviceModel>
в своей библиотеке, а затем скопируйте в app.config вашего основного приложения. Еще один признак того, что библиотека классов app.configs не читается во время выполнения. Я трачу оооочень много времени, компенсируя этот недосмотр (IMO). Если я хочу, чтобы библиотека прочитала ее конфигурацию из своего app.config, позвольте ей. В противном случае, зачем вообще нужен app.config для библиотек классов?Да, но если вы не можете изменить основной проект (например, Orchard CMS), вы можете сохранить конфигурацию службы WCF в своем проекте.
Вам нужно создать сервисный помощник с методом генерации клиента:
и использовать это:
Подробности в этой статье .
источник
Несколько ответов здесь приводят к правильному решению, когда вы сталкиваетесь с ошеломляющей ошибкой обращения к службе из файла класса: скопируйте информацию о конфигурации службы в ваш app.config web.config консоли или приложения Windows. Похоже, что ни один из этих ответов не показывает вам, что копировать. Давайте попробуем исправить это.
Вот что я скопировал из файла конфигурации моей библиотеки классов в файл конфигурации моего консольного приложения, чтобы обойти эту безумную ошибку для службы, которую я пишу, называемой "TranslationServiceOutbound".
Вы в основном хотите все внутри раздела system.serviceModel :
источник
Этот сводил меня с ума.
Я использую Silverlight 3 Prism (CAB) с WCF
Когда я вызываю службу WCF в модуле Prism, я получаю ту же ошибку:
Оказывается, он ищет в файле .xap оболочки файл ServiceReferences.ClientConfig, а не в файле модуля ServiceReferences.ClientConfig. Я добавил свою конечную точку и привязку к существующему файлу ServiceReferences.ClientConfig в моем приложении Silverlight Shell (оно вызывает собственные службы WCF).
Затем мне пришлось пересобрать приложение Shell, чтобы сгенерировать новый файл .xap для папки ClientBin моего веб-проекта.
Теперь эта строка кода наконец работает:
источник
Я получал эту ошибку в приложении ASP.NET, где служба WCF была добавлена в библиотеку классов, которая добавляется в приложение ASP.NET в виде ссылочного DLL-файла в папке bin. Чтобы устранить эту ошибку, параметры конфигурации в файле app.config в библиотеке классов, ссылающейся на службу WCF, необходимо скопировать в параметры web.config для сайта / приложения ASP.NET.
источник
Я обнаружил (как и при копировании в App.config пользовательского интерфейса, так как я использовал интерфейс библиотеки классов), мне пришлось ставить префикс имени привязки с именем ссылки на службу (моя
ServiceReference
приведена ниже).например:
вместо сгенерированного по умолчанию:
источник
У меня была та же проблема, но изменение пространства имен контракта не сработало для меня. Поэтому я попробовал веб-ссылку в стиле .Net 2 вместо ссылки на службу .Net 3.5. Это сработало.
Чтобы использовать веб-ссылку в Visual Studio 2008, нажмите «Добавить ссылку на службу», затем нажмите «Дополнительно», когда появится диалоговое окно. В этом вы найдете параметр, который позволит вам использовать веб-ссылку вместо ссылки на службу.
источник
Модульное тестирование небиблиотечного приложения, которое использует сервис, может вызвать эту проблему.
Информация, введенная другими, устраняет первопричину этого. Если вы пытаетесь написать автоматизированные тестовые случаи, а тестируемый модуль фактически вызовет интерфейс сервиса, вам нужно добавить ссылку на сервис в тестовый проект. Это разновидность приложения, использующего библиотечный тип ошибок. Я не сразу понял это, потому что мой код, который использует интерфейс , не находится в библиотеке . Однако, когда тест фактически выполняется, он будет выполняться из тестовой сборки, а не тестируемой сборки.
Добавление сервисной ссылки в проект модульного тестирования решило мою проблему.
источник
У меня есть ситуация, которая в модуле тестирования. Я скопировал файл app.config в проект модульного тестирования. Таким образом, проект модульного тестирования также содержит информацию о конечной точке.
источник
system.serviceModel
раздел. Это все!system.serviceModel
app.config консольного приложенияЯ сталкивался с этой проблемой однажды. Это было потому, что я все еще разрабатывал интерфейс, который использует сервис WCF. Я настроил тестовое приложение и продолжил разработку. Затем в процессе разработки я изменил некоторые пространства имен сервисов. Поэтому я дважды проверил "system.serviceModel -> client -> endpoint -> contract" в web.config, чтобы соответствовать классу WCF. Тогда проблема решена.
источник
Пространство имен в вашей конфигурации должно отражать остальную часть пути к пространству имен после пространства имен вашего клиента по умолчанию (как настроено в свойствах проекта). Основываясь на вашем опубликованном ответе, я предполагаю, что ваш клиент настроен для использования в пространстве имен Fusion.DataExchange.Workflows. Если вы переместили код клиента в другое пространство имен, вам потребуется обновить конфигурацию, чтобы она соответствовала оставшемуся пути к пространству имен.
источник
У меня та же проблема. Я пользуюсь службой WCF в библиотеке классов и вызываю библиотеку классов из Windows Application project. Но я забыл изменить
<system.serviceModel>
в файле конфигурации Windows-приложения Project такой же<system.serviceModel>
, как файл app.Config библиотеки классов.решение: измените конфигурацию внешнего проекта так же, как конфигурацию wcf библиотеки классов.
источник
Привет, я столкнулся с той же проблемой, но лучшее решение - позволить .NET настроить вашу конфигурацию на стороне клиента. Я обнаружил, что когда я добавляю ссылку на службу со строкой запроса http: /namespace/service.svc? Wsdl = wsdl0, она НЕ создает конечные точки конфигурации на стороне клиента. Но когда я удаляю? Wsdl-wsdl0 и использую только URL http: /namespace/service.svc, он создает конфигурацию конечной точки в файле конфигурации клиента. для краткого удаления "? WSDL = WSDL0".
источник
Не помещайте строку объявления клиента службы в качестве поля класса, вместо этого создайте экземпляр для каждого метода, который используется в. Таким образом, проблема будет исправлена. Если вы создаете экземпляр клиента службы как поле класса, тогда возникает ошибка времени разработки!
источник
В случае, если вы используете приложение WPF, использующее инфраструктуру PRISM, конфигурация должна существовать в вашем начальном проекте (то есть в проекте, где находится ваш загрузчик).
источник
Эта ошибка может возникнуть, если вы вызываете службу в библиотеке классов и вызываете библиотеку классов из другого проекта.
источник
Кажется, есть несколько способов создать / исправить эту проблему. Для меня продукт CRM, который я использую, был написан на нативном коде и может вызывать мою DLL-библиотеку .NET, но я сталкиваюсь с информацией о конфигурации, которая должна быть в / над основным приложением. Для меня приложение CRM - это не .NET, поэтому мне пришлось поместить его в мой файл machine.config (а не туда, где я хочу). Кроме того, поскольку моя компания использует Websense, мне было трудно даже добавить ссылку на сервис из-за проблемы 407 Proxy Authentication Required, которая требовала изменения в machine.cong.
Прокси-решение:
Чтобы заставить работать Справочник службы WCF, мне пришлось скопировать информацию из app.config моей DLL в основной конфигурационный файл приложения (но для меня это был machine.config). И мне также пришлось скопировать информацию о конечной точке в тот же файл. Как только я это сделал, он начал работать на меня.
источник
Хорошо. Мой случай был немного другим, но, наконец, я нашел решение для этого: у меня есть Console.EXE -> DLL -> Invoking WS1 -> DLL -> Invoking WS2
У меня были и конфигурации сервисной модели WS1, и WS2 в Console.EXE.config в соответствии с рекомендациями. - не решил проблему.
Но это все еще не работало, пока я не добавил WebReference WS2 в WS1 и не только в DLL, которая фактически создает и вызывает прокси WS2.
источник
Если вы ссылаетесь на веб-сервис в своей библиотеке классов, вам нужно скопировать app.config в ваше приложение Windows или консольное приложение.
решение: измените конфигурацию внешнего проекта так же, как конфигурацию wcf библиотеки классов.
Работал для меня
источник
У меня была такая же проблема
что и при использовании настольного приложения и веб-службы Global Weather.
Я удалил сервисную ссылку и добавил веб-ссылку, и проблема решена Спасибо
источник
Решением для меня было удалить имя конечной точки из атрибута имени конечной точки в клиентском web.config, это позволило прокси использовать
только занял весь день, чтобы потренироваться. Кроме того, имя контракта было неверным после того, как это исправление было на месте, хотя оно было неверным, когда появилась первоначальная ошибка. Двойная, а затем тройная проверка на наличие контракта с именами людей !! атрибут: Ян
источник
Позвольте мне добавить еще одну вещь для поиска. ( Том Хэй Ответ уже намекает на это, но я хочу быть явным)
Мой
web.config
файл имел следующее определение:Я уже использовал basicHttpsBinding для одной ссылки, но затем я добавил новую ссылку, которая требовала basicHttpBinding (нет). Все, что мне нужно было сделать, это добавить это к моему
protocolMapping
следующему:Как правильно указывает LR , это должно быть определено в нужных местах. Для меня это означало один в файле app.config моего модульного теста, а также один в файле web.config основного сервисного проекта.
источник
У меня была эта ошибка, когда я ссылался на Контракт в элементе файла конфигурации без оператора глобальной области видимости.
т.е.
работает, но
выдает ошибку «Не удалось найти элемент конечной точки по умолчанию, который ссылается на контракт».
Сборка, содержащая MyNamepsace.IMyContract, находится в сборке, отличной от основного приложения, поэтому это может объяснить необходимость использования разрешения глобальной области видимости.
источник
Когда вы добавляете сервисную ссылку
остерегайтесь пространства имен, которое вы вводите:
Вы должны добавить его к имени вашего интерфейса:
источник
Я получил ту же ошибку, и я перепробовал много вещей, но не сработал, потом я заметил, что мой «контракт» не был одинаковым на всех проектах, я изменил контракт, как и на все проекты внутри решения, и чем он работал. Это проект А
Проект Б:
Наконец я изменил для обоих как:
источник
У меня была та же проблема, и она была решена только тогда, когда приложение хоста и DLL, которые использовали эту конечную точку, имели одно и то же имя ссылки на службу.
источник