Я пытаюсь предоставить службу WCF через привязку http и net.tcp в IIS.Кажется, что все работает должным образом, когда я указываю только привязки net.tcp или только привязки http, но когда я добавляю и программу wcftestclient, и все другие генераторы прокси-служб, происходит сбой:
Ошибка: невозможнополучить метаданные из net.tcp: //host/application/service.svc ... Ошибка обмена метаданными URI: net.tcp: //host/application/service.svc Метаданные содержат ссылку, которая не может быть разрешена: 'net.tcp: //host/application/service.svc '.В net.tcp: //host/application/service.svc не было прослушивания конечной точки, которая могла бы принять сообщение.Это часто вызвано неправильным адресом или действием SOAP.См. InnerException, если имеется, для получения более подробной информации.
Мой web.config выглядит следующим образом:
<?xml version="1.0"?>
<configuration>
<system.serviceModel>
<services>
<service behaviorConfiguration="ServiceBehavior" name="MyServiceBehavior">
<endpoint address="mex-http" binding="mexHttpBinding" name="mex-http" contract="IMetadataExchange" />
<endpoint address="service-http" binding="basicHttpBinding" name="db-http" contract="IMyService" />
<endpoint address="mex-tcp" binding="mexTcpBinding" name="mex-http" contract="IMetadataExchange" />
<endpoint address="service-tcp" binding="netTcpBinding" name="db-http" contract="IMyService" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="MyServiceBehavior">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
Итак, если я удалю конечные точки mex-http и db-http, Все отлично.Если я этого не сделаю, сервис доступен через http, но не через tcp.Если я удалю конечные точки tcp, конечно, http все еще будет доступен.Есть мысли?
Редактировать: Исходя из предположения Марка, я изменил соответствующие net.tcp
конечные точки, чтобы они читали
<endpoint name="mex-http" address="net.tcp://localhost/myservice/MyService.svc/mex" binding="mexTcpBinding" contract="IMetadataExchange" />
<endpoint name="db-http" address="net.tcp://localhost/myservice/MyService.svc" binding="netTcpBinding" contract="IMyService" />
, что работает как ожидалось!