Я использую две привязки TCP и HTTP. Я хочу предоставить данные mex для обеих привязок. Я хочу, чтобы mexHttpBinding предоставлял только службы HTTP, в то время как mexTcpBinding предоставлял только службы TCP. Или возможно, что я получаю доступ к службе статистики только через привязку HTTP, а к службе EventLogging через TCP?
Например:
Для TCP мне нужно было только
net.tcp://localhost:9001/ABC/mex net.tcp://localhost:9001/ABC/eventLogging
Для HTTP
http://localhost:9002/ABC/stats http://localhost:9002/ABC/mex
Когда я подключаюсь к любому из базовых адресов (используя тестовый клиент WCF), я могу получить доступ ко всем службам? Например, когда я подключаюсь к net.tcp: // localhost: 9001 / ABC, я могу использовать службы, которые предлагаются в привязке HTTP. Почему это так?
<system.serviceModel>
<services>
<service behaviorConfiguration="ABCServiceBehavior" name="ABC.Data.DataServiceWCF">
<endpoint address="eventLogging" binding="netTcpBinding" contract="ABC.Campaign.IEventLoggingService" />
<endpoint address="mex" binding="mexTcpBinding" bindingConfiguration="" contract="IMetadataExchange" />
<endpoint address="stats" binding="basicHttpBinding" contract="ABC.Data.IStatsService" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="net.tcp://localhost:9001/ABC" />
<add baseAddress="http://localhost:9002/ABC" />
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="ABCServiceBehavior">
<serviceMetadata httpGetEnabled="false" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>