example - wcf vs web api
WCF NetTcpBinding con mex (3)
Debe publicar los metadatos del servicio a través de http para wsdl. Agregue la siguiente etiqueta a la etiqueta <system.serviceModel> de su archivo de configuración
<behaviors>
<serviceBehaviors>
<behavior name = "MetadataBehavior">
<serviceMetadata httpGetEnabled = "true"/>
</behavior>
</serviceBehaviors>
</behaviors>
También deberá especificar una dirección http desde donde estarán disponibles los metadatos del servicio en wsdl. Agregue esto al nodo <servicio> de su archivo de configuración:
<host>
<baseAddresses>
<add baseAddress="net.tcp://localhost:8001" />
<add baseAddress="http://localhost:8000/Service1" />
</baseAddresses>
</host>
Luego, si va a http://localhost:8000/Service1?wsdl , debería ver el wsdl para su servicio.
Estoy intentando publicar un servicio wcf usando nettcpbinding. Quiero publicar metadatos, usando? Wsdl. Agregué la siguiente línea al archivo de configuración:
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
pero no puedo ver el wsdl en mi navegador. ¿qué hice mal? Gracias.
Edición: Aquí está la parte relevante de mi archivo de configuración:
<system.serviceModel>
<services>
<service name="wcfcheck.service1" behaviorConfiguration="wcfcheck.Service1Behavior">
<endpoint address="" binding="netTcpBinding" contract="wcfcheck.Iservice1"/>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="wcfcheck.Service1Behavior">
<serviceMetadata httpGetEnabled="true" httpGetUrl=""/>
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
Puede que no esté accediendo a la URL correcta. http://localhost:51159/Service1.svc?wsdl tanto http://localhost:51159/Service1.svc?wsdl como http://localhost:51159/Service1.svc/mex?wsdl , y sin el ''? Wsdl''.
Puede probar el enlace mexTcp y asegurarse de que su dirección base comience con net.tcp: // .....
<serviceMetadata>
utilizar el elemento <serviceMetadata>
.
<behaviors>
<serviceBehaviors>
<behavior name="metadataSupport">
<!-- Enables the IMetadataExchange endpoint in services that -->
<!-- use "metadataSupport" in their behaviorConfiguration attribute. -->
<!-- In addition, the httpGetEnabled and httpGetUrl attributes publish -->
<!-- Service metadata for retrieval by HTTP/GET at the address -->
<!-- "http://localhost:8080/SampleService?wsdl" -->
<serviceMetadata httpGetEnabled="true" httpGetUrl=""/>
</behavior>
</serviceBehaviors>
</behaviors>