Ошибка WCF-не удалось найти элемент конечной точки по умолчанию, который ссылается на контракт " UserService.UserService'



есть идеи, как это исправить?



UserService.UserServiceClient userServiceClient = new UserServiceClient();
userServiceClient.GetUsersCompleted += new EventHandler<GetUsersCompletedEventArgs>(userServiceClient_GetUsersCompleted);
userServiceClient.GetUsersAsync(searchString);


.



<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_UserService"
maxBufferSize="2147483647"
maxReceivedMessageSize="2147483647">
<security mode="None" />
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://localhost:52185/UserService.svc"
binding="basicHttpBinding"
bindingConfiguration="BasicHttpBinding_UserService"
contract="UserService.UserService"
name="BasicHttpBinding_UserService" />
</client>
<behaviors>
<serviceBehaviors>
<behavior name="Shell.Silverlight.Web.Service3Behavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
<services>
<service behaviorConfiguration="Shell.Silverlight.Web.Service3Behavior"
name="Shell.Silverlight.Web.Service3">
<endpoint address=""
binding="basicHttpBinding"
contract="Shell.Silverlight.Web.Service3" />
<endpoint address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
</service>
</services>
</system.serviceModel>


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



решен!



Я не упоминал, что это было приложение Silverlight. У меня была ссылка wcf в DLL, которая имела свои собственные "ServiceReferences.ClientConfig файл". Я переместил содержимое ServiceReferences DLL.ClientConfig к основному проекту silverlight, и он работал.

660   13  

13 ответов:

Я столкнулся с той же проблемой. Мое приложение также было приложением Silverlight, и служба вызывалась из библиотеки классов с пользовательским UserControl, который использовался в ней.

решение простое. Скопируйте определения конечных точек из файла конфигурации (например, ServiceReferences.ClientConfig) библиотеки классов в конфигурационный файл приложения silverlight. Я знаю, что вы ожидаете, что это сработает без необходимости этого делать, но, видимо, кто-то в В тот день у Редмонда был отпуск.

вы также можете установить эти значения программно в библиотеке классов, это позволит избежать ненужного перемещения конфигурационных файлов по библиотеке. Пример кода для простого BasciHttpBinding -

BasicHttpBinding basicHttpbinding = new BasicHttpBinding(BasicHttpSecurityMode.None);
basicHttpbinding.Name = "BasicHttpBinding_YourName";
basicHttpbinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.None;
basicHttpbinding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.UserName;

EndpointAddress endpointAddress = new EndpointAddress("http://<Your machine>/Service1/Service1.svc");
Service1Client proxyClient = new Service1Client(basicHttpbinding,endpointAddress);

на всякий случай, если кто-то столкнется с той же проблемой при использовании WPF (а не WCF или Silverlight):

У меня была эта ошибка, при подключении к веб-службе. Когда мой код был в "основном" решении приложения WPF, никаких проблем, он работал отлично. Но когда я переместил код в более разумное решение DAL-layer, он выбросил бы исключение.

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

Как было указано "Sprite" в этом потоке, вам нужно вручную скопировать тег.

для приложений WPF это означает копирование тега из приложение.конфигурации в моем решении DAL к приложение.конфигурации в основном WPF Прикладное решение.

Я столкнулся с той же проблемой, по какой-то причине Visual Studio не обновила веб-конфигурацию, когда я впервые добавил службу. Я обнаружил, что обновление ссылки на службу также исправило эту проблему.

действия:

  1. перейдите в папку Service Reference
  2. развернуть
  3. щелкните правой кнопкой мыши и выберите Обновить ссылку на службу
  4. наблюдать за обновлением веб-конфигурации

изменить сети.конфигурации WCF сервиса как "адрес конечной точки="" привязки="привязка basichttpbinding"..."(ранее binding= "wsHttpBinding") после сборки приложения, в " ServiceReferences.ClientConfig """ configuration> имеет значение. Тогда он будет работать нормально.

переименовать выходной.конфигурация произведенная svcutil.exe в приложение.конфиг. это сработало для меня.

у вас есть интерфейс, который реализует ваш класс "UserService".

конечные точки должны указать интерфейс для атрибута договора:

contract="UserService.IUserService"

Не уверен, что это проблема. Конечная точка и привязка имеют одинаковое имя

Не уверен, что это действительно проблема, но я вижу, что у вас есть то же имя для вашей конфигурации привязки ().

Я обычно пытаюсь назвать мои конечные точки чем-то вроде "UserServiceBasicHttp" или что-то подобное ("привязка" действительно не имеет ничего общего здесь), и я пытаюсь назвать мои конфигурации привязки чем-то "....Конфигурация", например" UserServiceDefaultBinding", чтобы избежать возможных конфликтов имен.

Марк

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

эта проблема возникает при использовании службы через другое приложение.Если приложение имеет конфигурационный файл, просто добавьте в этот файл информацию о конфигурации службы. В моей ситуации не было никакого конфигурационного файла, поэтому я использую этот метод, и он работал нормально.Просто сохраните url-адрес в приложении, прочитайте его и с помощью метода BasicHttpBinding() отправьте его в приложение-службу в качестве параметра.Это простая демонстрация того, как я это сделал:

Configuration config = new Configuration(dataRowSet[0]["ServiceUrl"].ToString());

var remoteAddress = new System.ServiceModel.EndpointAddress(config.Url);


SimpleService.PayPointSoapClient client = 
    new SimpleService.PayPointSoapClient(new System.ServiceModel.BasicHttpBinding(), 
    remoteAddress);
SimpleService.AccountcredResponse response = client.AccountCred(request);

для тех, кто работает с AX 2012 AIF услуги и попробуйте позвонить туда C# или VB проект внутри AX( x++) и страдают от таких ошибок "не удалось найти конечную точку по умолчанию"... или "договор не найден" ... вернитесь в проект visual studio (c#) и добавьте эти строки перед определением клиента службы, затем разверните проект, перезапустите клиент AX и повторите попытку: Обратите внимание, пример для адаптер NetTcp, вы могли бы легко используйте любой другой адаптер вместо этого в соответствии с вашими потребностями.

 Uri Address = new Uri("net.tcp://your-server:Port>/DynamicsAx/Services/your-port-name");
 NetTcpBinding Binding = new NetTcpBinding();
 EndpointAddress EndPointAddr = new EndpointAddress(Address);
 SalesOrderServiceClient Client = new SalesOrderServiceClient(Binding, EndPointAddr);

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

короче говоря, просто удалите его из библиотеки классов и поместите в проект запуска.

Comments

    Ничего не найдено.