Pourquoi ne pas mon ChannelFactory voir mon point de terminaison de configuration?

J'ai suivi Miguel Castro excellent article sur la WCF ici et ça fonctionne bien, sauf que j'ai le code suivant

public AdminClient()
{
    ChannelFactory<IProductAdmin> factory = new ChannelFactory<IProductAdmin>();
    productAdminChannel = factory.CreateChannel();
}

Dans mon application.fichier de config, j'ai la configuration suivante:

<system.serviceModel>
    <client>
        <endpoint address="net.tcp://localhost:8002/ProductBrowser"
                  binding="netTcpBinding"
                  contract="Contracts.IProductAdmin" />
    </client>
</system.serviceModel>

Mais, lorsque je lance le constructeur de AdminClient j'obtiens une exception en disant que le point de terminaison n'est pas défini. Cependant, si je change de configuration de donner le point de terminaison d'un nom, puis de créer l'usine comme suit, il fonctionne.

public AdminClient()
{
    var fac = new ChannelFactory<IProductAdmin>("admin");
    productAdminChannel = fac.CreateChannel();
}

<system.serviceModel>
    <client>
        <endpoint name="admin" 
                  address="net.tcp://localhost:8002/ProductBrowser"
                  binding="netTcpBinding"
                  contract="Contracts.IProductAdmin" />
    </client>
</system.serviceModel>

J'aimerais une explication pour cela. La documentation MSDN n'est pas beaucoup d'aide...

  • Vous pouvez le faire à l'extérieur avec votre .fichier de configuration entièrement en passant par la liaison et l'adresse de la ChannelFactory.
  • Je pense que le point est le divorce le client à partir de détails de mise en œuvre. Manuellement de faire le travail de la configuration du système est douloureux et inutiles. Si le client est d'avoir un point de terminaison pour une interface donnée ensuite à l'aide d'un astérisque trouverez la première qualification de point de terminaison, ce qui permettra de satisfaire à l'exigence de plus simple client.
  • Sky Hi. Désolé, n'avez pas fait attention, et c'était il y a si longtemps pour moi, je ne me souviens pas ce que j'ai besoin 🙂 Mais merci pour votre travail!