estoy un poco confundido de cómo exponer un punto final en WCFexponiendo punto final net.tcp
Tengo un extremo TCP y un punto final TCP Mex.
<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>
Cuando trato de ejecutar esto en el host de servicio me da la siguiente excepción:
El nombre de contrato 'IMetadataExchange' no se pudo encontrar en la lista de contratos implementado por el MessageReaderService servicio . Agregue un ServiceMetadataBehavior al archivo de configuración
o al ServiceHost directamente para habilitar el soporte para este contrato.
Así que concluyo de este error que necesito agregar un comportamiento de servicio para exponer los metadatos.
por lo que añade el comportamiento:
<behavior name="ServiceBehavior">
<serviceMetadata httpGetEnabled="true"/>
</behavior>
pero cuando me siento un error diferente:
La propiedad de ServiceMetadataBehavior HttpGetEnabled se establece en true y la HttpGetUrl propiedad es una dirección relativa, pero no hay una dirección de base http. O proporciona una dirección base http o establece HttpGetUrl en una dirección absoluta.
- Así que ahora tengo que añadir en realidad otro punto final (http) para exponer los metadatos sobre mexhttpbinding?
- ¿hay una manera simple de exponer el punto final sobre tcp?