Ошибка при использовании службы: «Не удалось найти элемент конечной точки по умолчанию, который ссылается на контракт» - PullRequest
0 голосов
/ 07 сентября 2011

Я пытаюсь переключить свою службу WCF с привязок TCP на привязки HTTP, изменив app.config, но когда я пытаюсь использовать службу WCF из тестового консольного приложения, я получаю эту ошибку:

Could not find default endpoint element that references contract 'ServiceReference1.IUsers' in the ServiceModel client configuration section. This might be because no configuration file was found for your application, or because no endpoint element matching this contract could be found in the client element.

Вот новый app.config, использующий HTTP-привязки, который выдает мне ошибку выше:

<services>
  <service name="Test.UserServ" behaviorConfiguration="ServiceBehavior">
    <host>
      <baseAddresses>
        <add baseAddress="http://localhost:8000/Users" />
      </baseAddresses>
    </host>
    <endpoint 
        address="" 
        binding="webHttpBinding" behaviorConfiguration="EndpointBehavior" 
        contract="Test.IUsers" />
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
  </service>
</services>
<behaviors>
  <serviceBehaviors>
    <behavior name="ServiceBehavior">
      <serviceMetadata httpGetEnabled="true" />
    </behavior>
  </serviceBehaviors>
  <endpointBehaviors>
    <behavior name="EndpointBehavior">
      <webHttp />
    </behavior>
  </endpointBehaviors>
</behaviors>

Вот старый рабочий app.config, который все еще использует TCPbindings:

<services>
  <service name="Test.UserServ" behaviorConfiguration="TCPBehavior">
    <host>
      <baseAddresses>
        <add baseAddress="net.tcp://localhost:8731/Users"/>
      </baseAddresses>
    </host>
    <endpoint 
        address="" 
        binding="netTcpBinding" bindingConfiguration="TCPConfiguration" 
        contract="Test.IUsers"/>
    <endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange"/>
  </service>
</services>
<bindings>
  <netTcpBinding>
    <binding name="TCPConfiguration">
      <security mode="None"/>
    </binding>
  </netTcpBinding>
</bindings>
<behaviors>
  <serviceBehaviors>
    <behavior name="TCPBehavior">
      <serviceMetadata/>
    </behavior>
  </serviceBehaviors>
</behaviors>

Что-то не так с конфигурацией или это связано с некоторыми ограничениями, накладываемыми HTTP-привязками, на которые я переключился?

1 Ответ

0 голосов
/ 07 сентября 2011

Скорее всего, в вашем конфигурационном файле клиента указаны две конечные точки.И старая конечная точка TCP, и ваша новая конечная точка HTTP.Либо удалите старую конечную точку TCP в файле конфигурации клиента, либо используйте конструктор при объявлении клиента в своем коде (конструктор принимает имя конечной точки в виде строки, что-то вроде new YourClient("NameOfWsHttpBinding");).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...