WCF Cannot create channel factory with given endpoint name

693 просмотра

1 ответ

I would like to create a channel factory for my self-hosted service. Here is my App.config file:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior name="mexBehavior">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <services>
      <service behaviorConfiguration="mexBehavior" name="Service.TexasHoldemService">
        <endpoint address="TexasHoldem" binding="netTcpBinding" bindingConfiguration=""
            contract="Service.ITexasHoldemService" name="TexasHoldem"/>
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:8080" />
            <add baseAddress="net.tcp://localhost:8090" />
          </baseAddresses>
        </host>
      </service>
    </services>
  </system.serviceModel>
</configuration>

Here is how I host the service

host = new ServiceHost(typeof (Service.TexasHoldemService));
host.Open()

var factory = new ChannelFactory<ITexasHoldemService>("TexasHoldem");

However, I am getting a an exception like this:

An unhandled exception of type 'System.InvalidOperationException' occurred in System.ServiceModel.dll

Could not find endpoint element with name 'TexasHoldem' and contract 'Service.ITexasHoldemService'
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 name could be
found in the client element.

I also tried with setting address in ChannelFactory constructor as:

http://localhost/TexasHoldem
http://localhost/Service.TexasHoldemService/TexasHoldem
net.tcp://localhost/TexasHoldem
net.tcp://localhost/Service.TexasHoldemService/TexasHoldem

And none of the above works ;/

Автор: Zwierzak Источник Размещён: 08.11.2019 11:32

Ответы (1)


1 плюс

Решение

You need to add an <endpoint> under a <client> element to be able to call it from ChannelFactory:

Add the following code under <system.serviceModel>:

  <client>
    <endpoint address="net.tcp://localhost:8090/TexasHoldem" binding="netTcpBinding" bindingConfiguration="" contract="Service.ITexasHoldemService" name="TexasHoldem">
    </endpoint>
  </client>
Автор: Denys Wessels Размещён: 20.08.2016 05:26
Вопросы из категории :
32x32