El verdadero reto cuando trabajas con WCF es su configuración y sus múltiples variantes para soportar todo tipo de protocolos, seguridad, identidad, etc. Debido a esto estuve varios días buscando y probando varias configuraciones que cumplieran con mis expectativas.
Primero agrega el atributo [ServiceBehavior(AddressFilterMode = AddressFilterMode.Any)] a la interfaz del servicio para permitir la conexión cliente-f5-wcf.
Lo siguiente es utilizar la siguiente configuración en el Servicio WCF
<system.serviceModel>
<services>
<service behaviorConfiguration="BIGIPBehavior" name="WCF_Service.ServiceDemo" >
<endpoint address=""
binding="wsHttpBinding"
bindingConfiguration="BIGIPBinding"
contract="WCF_Service.IServiceDemo">
</endpoint>
</service>
</services>
<bindings>
<wsHttpBinding>
<binding name="BIGIPBinding"
closeTimeout="05:00:00"
maxBufferPoolSize="10000000"
maxReceivedMessageSize="1000000000"
openTimeout="05:00:00"
receiveTimeout="05:00:00"
sendTimeout="05:00:00">
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None" />
<message clientCredentialType="Windows" establishSecurityContext="false" negotiateServiceCredential="true" />
</security>
</binding>
</wsHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="BIGIPBehavior">
<serviceMetadata httpGetEnabled="True"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
<dataContractSerializer maxItemsInObjectGraph="1000000000" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
Finalmente, esta es la configuración a utilizar en el cliente
<system .servicemodel="">
<bindings>
<wshttpbinding>
<binding closetimeout="05:00:00" maxbufferpoolsize="100000000" maxreceivedmessagesize="1000000000" name="BIGIPBinding" opentimeout="05:00:00" receivetimeout="05:00:00" sendtimeout="05:00:00">
<security mode="Transport">
<transport clientcredentialtype="None" proxycredentialtype="None">
<message clientcredentialtype="Windows" establishsecuritycontext="false" negotiateservicecredential="true">
</message></transport></security>
<readerquotas maxarraylength="1000000" maxbytesperread="1000000" maxdepth="1000000" maxnametablecharcount="1000000" maxstringcontentlength="1000000000">
</readerquotas></binding>
</wshttpbinding>
</bindings>
<client>
<endpoint address="https://test.mytest.com/WCF_BIG_IP_DEMO/ServiceDemo.svc" binding="wsHttpBinding" bindingconfiguration="BIGIPBinding" contract="ServiceDemoReference.IServiceDemo" name="">
</endpoint>
</client>
</system>
Nota: Los valores de los atributos de ambas configuraciones deben ser cambiados a la necesidad del proyecto.
Referencias
No hay comentarios:
Publicar un comentario