Я немного запутался о том, как выставить конечную точку в WCFподвергая net.tcp конечной
У меня есть TCP конечную точку и MEX 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>
Когда я пытаюсь запустить это в хост службы я получаю следующее исключение:
Имя контракта «IMetadataExchange» не может быть найден в списке контрактов реализуемого MessageReaderService услуг , Добавьте ServiceMetadataBehavior в файл конфигурации
или в ServiceHost, чтобы включить поддержку этого контракта.
Поэтому я пришел к выводу из этой ошибки, что мне нужно добавить поведение службы для отображения метаданных.
Поэтому я добавил поведение:
<behavior name="ServiceBehavior">
<serviceMetadata httpGetEnabled="true"/>
</behavior>
, но затем я получаю другую ошибку:
HttpGetEnabled свойство ServiceMetadataBehavior устанавливается истина и HttpGetUrl свойство относительный адрес, но нет http-адреса. Либо укажите базовый адрес http, либо установите HttpGetUrl на абсолютный адрес.
- Так что теперь у меня есть на самом деле добавить другую конечную точку (HTTP), чтобы разоблачить метаданные над mexhttpbinding?
- Есть ли простой способ разоблачить конечную точку над tcp?