exposer net.point de terminaison tcp

Je suis un peu confus de la façon d'exposer un point de terminaison dans WCF

J'ai un point de terminaison tcp et un mex de point de terminaison tcp.

<service name="MessageReaderService.MessageReaderService">
    <endpoint name="NetTcpReaderService" 
        address="ReaderService" 
        binding="netTcpBinding" bindingConfiguration=""
        contract="Contracts.IMessageReaderService" />
    <endpoint name="netTcpMex" 
        address="mex" 
        binding="mexTcpBinding" bindingConfiguration=""
        contract="IMetadataExchange" />
    <host>
       <baseAddresses>
           <add baseAddress="net.tcp://localhost:8082" />
       </baseAddresses>
    </host>
 </service>

Lorsque j'essaie d'exécuter ce dans le service d'accueil-je obtenir de l'exception suivante :

Le contrat nom de "IMetadataExchange" ne peut pas être trouvé dans la liste des contrats
mis en œuvre par le service MessageReaderService. Ajouter un ServiceMetadataBehavior à l'
fichier de configuration ou de la ServiceHost directement pour activer le support de ce contrat.

J'ai donc conclure de cette erreur que j'ai besoin d'ajouter un comportement de service pour exposer les métadonnées.

J'ai donc ajouté le comportement :

<behavior name="ServiceBehavior">
    <serviceMetadata httpGetEnabled="true"/>                  
</behavior> 

mais puis-je obtenir une autre erreur :

La HttpGetEnabled propriété de ServiceMetadataBehavior est définie sur true et le
HttpGetUrl propriété est une adresse relative, mais il n'y a pas de http adresse de base. Soit
offre un http adresse de base ou un ensemble HttpGetUrl à une adresse absolue.

  1. Alors maintenant, je dois ajouter un autre point de terminaison (http) pour exposer les métadonnées sur mexhttpbinding ?
  2. est-il un moyen simple pour exposer le point de terminaison tcp ?

OriginalL'auteur eran otzap | 2012-04-13