Questo sembra essere utile nella seguente situazione ...
<system.serviceModel>
<services>
<service name="WCFService.Service" behaviorConfiguration="ServiceBehavior">
<host>
<baseAddresses>
<add baseAddress="net.tcp://localhost:8080/WCFService"/>
</baseAddresses>
</host>
<!-- Net.Tcp EndPoints-->
<endpoint address=""
binding="netTcpBinding"
contract="WCFService.IService" />
<endpoint address="mex"
binding="mexTcpBinding"
contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="ServiceBehavior">
<serviceMetadata httpGetEnabled="false" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
ci sono endpoint HTTP definiti e si può arrivare al vostro servizio nei seguenti modi. ..
- Browser: http://localhost/WCFService/Service.svc
- svcutil.exe net.tcp://localhost:8080/WCFService/Service.svc/mex
Se si commento fuori l'endpoint MEX allora né funzionerà.
vi chiedete perché i meta-dati sono ancora visibili nel browser come
a) non ho un endpoint HTTP e b) ho specificamente previsto ...
<serviceMetadata httpGetEnabled="false" />
la ragione di questo è che nelle impostazioni avanzate per il sito web che avevo per protocolli abilitati in impostazioni avanzate le seguenti definito ...
http,net.tcp
Se si rimuove http
, i metadati non possono essere visualizzati nel browser. Sembrerebbe che sia in questo scenario, un sito web abilitato net.tcp, che sia necessario l'endpoint mex.
Buona domanda.+1 – Lijo