He aquí otra vez tratando de exponer mex para binding netTCP, el escenario que yo tenía era el siguiente:
Servicios WCF expuestos por binding netTCP y WSHttp, los endpoint netTCP les tenía un binding customBinding, cuando aplicaba la típica configuración que me recomendaban en el post a todo el mundo le funcionaba pero a mí me generaba un error, como este
Aqui la recomendación
<endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange" bindingConfiguration="mexBinding" /> to <endpoint address="mex" binding="netTcpBinding" contract="IMetadataExchange" bindingConfiguration="mexBinding" />
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, “Courier New”, courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
Resulta que me escenario era diferente, tenía un endpoint así:
<!--Endpoint netTCPCustom--> <endpoint address="" binding="customBinding" bindingConfiguration="customTcpBinding_Funcionalidad" name="Custom_netTCPEndPoint_Funcionalidad" contract="Contrato.Funciolidad"> <identity> <dns value="localhost" /> </identity> </endpoint>
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, “Courier New”, courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
Con un binding así:
<bindings> <customBinding> <binding name="customTcpBinding_Funcionalidad"> <binaryMessageEncoding maxReadPoolSize="1024" maxWritePoolSize="1024" maxSessionSize="32768"> <readerQuotas maxDepth="1024" maxStringContentLength="262144" maxArrayLength="262144" maxBytesPerRead="32768" maxNameTableCharCount="262144"/> </binaryMessageEncoding> <windowsStreamSecurity/> <tcpTransport manualAddressing="false" maxBufferPoolSize="524288" maxReceivedMessageSize="524288" connectionBufferSize="65536" hostNameComparisonMode="StrongWildcard" channelInitializationTimeout="00:01:00" maxBufferSize="524288" maxPendingConnections="200" maxOutputDelay="00:00:00.2000000" maxPendingAccepts="200" transferMode="Buffered" listenBacklog="500" portSharingEnabled="false" teredoEnabled="false"> <connectionPoolSettings groupName="default" leaseTimeout="00:30:00" idleTimeout="00:30:00" maxOutboundConnectionsPerEndpoint="300"/> </tcpTransport> </binding> </customBinding> </bindings>
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, “Courier New”, courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
Tenía que agregar un endpoint para mex así:
<endpoint address="mex" binding="customBinding" contract="IMetadataExchange" bindingConfiguration="customTcpBinding_Funcionalidad" />
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, “Courier New”, courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
Conclusión:
El error lo decía, las configuraciones del enpoint no concuerdan con las que se han configurado para otro servicios o endpoints.
Lo ejemplos siempre hablan de configuraciones básicas, un endpoint ya configurado binding netTCP, pero yo tenía un customBinding con una cantidad de configuraciones realizadas para tunning, lo que hacía como decía el ejemplo era cambiar mexTcpBinding por netTcpBinding, yo tenía era que cambiarlo por customBinding, con esto ya mi endpoint mex funcionaria pero solo agregando una configuración de binding igual a la que ya tenía en el otro endpoint por eso volví a utilizar el binding que ya tenía y coloque esto: bindingConfiguration=”customTcpBinding_Funcionalidad” , y listo ya tenía porfin mi endpoint netTCP y mi endpoint mex