Ну, я думаю, проблема в следующем:
- у вас есть базовый адрес для net.tcp
- у вас определена конечная точка MEX http (но нет базового адреса http)
В основном, если вы хотите использовать MEX поверх http, вам необходимо указать либо полный адрес для конечной точки MEX, либо базовый адрес http (если вы указываете только относительный адрес).
Решение 1: укажите полный адрес для конечной точки MEX:
<services>
<service name="FirstWcfService.Service"
behaviorConfiguration="ServiceBehavior">
<endpoint
address="FirstWcfService"
binding="netTcpBinding"
contract="FirstWcfService.IService"/>
<endpoint
address="http://localhost:9102/FirstWcfService/mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
......
</service>
</services>
Решение 2: также определить базовый адрес HTTP:
<services>
<service name="FirstWcfService.Service"
behaviorConfiguration="ServiceBehavior">
<endpoint
address="FirstWcfService"
binding="netTcpBinding"
contract="FirstWcfService.IService"/>
<endpoint
address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="net.tcp://localhost:9101/"/>
<add baseAddress="http://localhost:9102/"/>
</baseAddresses>
</host>
</service>
</services>
Решение 3: использовать вместо mexTcpBinding
<services>
<service name="FirstWcfService.Service"
behaviorConfiguration="ServiceBehavior">
<endpoint
address="FirstWcfService"
binding="netTcpBinding"
contract="FirstWcfService.IService"/>
<endpoint
address="mex"
binding="mexTcpBinding"
contract="IMetadataExchange" />
......
</service>
</services>
Любой из этих трех вариантов должен решить эту проблему.
Слово предостережения: я считаю довольно рискованным называть вашу конфигурацию поведения службы "ServiceBehavior" ......
<serviceBehaviors>
<behavior name="ServiceBehavior" >
Моя рекомендация: называйте вашу первую конфигурацию по умолчанию просто «Default» (или «DefaultBehavior»)
<serviceBehaviors>
<behavior name="Default" >
и начинайте выдавать другие имена, только если у вас несколько конфигураций.
Вызывая это ServiceBehavior
, похоже, через некоторое время возникают проблемы .....