(Lea comentario ya que tengo una solución)
Hola,llamada de servicio WCF trabajar con basicHttpBinding pero falla con netTcpBinding
He creado un servicio WCF que Estoy de alojamiento en IIS 7.5 en Windows 7 usando .NET 4.0
El servicio se aloja en http y net.tcp.
- net.tcp: // localhost: 42/Servicio/MyService.svc
- http://localhost:43/Service/MyService.svc
He probado mi servicio mediante el WcfTestClient y parece que funciona correctamente a través tanto basicHttp y netTcp .
Sin embargo, cuando intento consumir este servicio a través de mi página web ASP.NET, recibo un error al intentar pasar por nettcp
Mi punto extremo del cliente se ve de la siguiente manera
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="Generic_HttpBinding" sendTimeout="00:01:00" receiveTimeout="00:01:00" maxBufferPoolSize="2000000" maxReceivedMessageSize="2000000000">
<security mode="None"/>
<readerQuotas maxDepth="2000000" maxStringContentLength="2000000" maxArrayLength="2000000" maxBytesPerRead="2000000" maxNameTableCharCount="2000000"/>
</binding>
</basicHttpBinding>
<netTcpBinding>
<binding name="Generic_Binding" sendTimeout="00:01:00" receiveTimeout="00:01:00" maxBufferPoolSize="2000000" maxReceivedMessageSize="2000000000">
<security mode="None"/>
<readerQuotas maxDepth="2000000" maxStringContentLength="2000000" maxArrayLength="2000000" maxBytesPerRead="2000000" maxNameTableCharCount="2000000"/>
</binding>
</netTcpBinding>
</bindings>
<client>
<endpoint name="EndPointHttp" address="http://localhost:43/Service/MyService.svc" binding="basicHttpBinding" bindingConfiguration="Generic_HttpBinding" contract="NameSpace.Services.Contracts.IService"></endpoint>
<endpoint name="EndPoint" address="net.tcp://localhost:42/Service/MyService.svc" binding="netTcpBinding" bindingConfiguration="Generic_Binding" contract="NameSpace.Services.Contracts.IService"></endpoint>
</client>
Ahora llamo al servicio de la misma manera simplemente cambiando mi nombre de punto final
var factory = new ChannelFactory<IService>(SuppliedEndpointName);
factory.Open();
var proxy = factory.CreateChannel();
var result = proxy.SomeServiceMethod();
Si paso este método, el basicHttpBinding funciona perfectamente.
El segundo i SWAP para nettcp, recibo este error inmediatamente:
Excepción: La conexión de socket fue abortado. Esto podría deberse a un error al procesar su mensaje o un tiempo de espera de recepción excedido por el host remoto o un problema de recursos de red subyacente. El tiempo de espera del socket local fue '00: 01: 00 '.
excepción interna: Una conexión existente forzosamente fue cerrada por el host remoto
Código de error: 10054
Por favor, ¿alguien puede ayudar, me está volviendo loco.
Definitivamente he instalado las funciones Activación HTTP WCF y Activación NO HTTP.
He configurado mi enlace para que sea HTTP y net.tcp en diferentes puertos.
He configurado mis protocolos habilitados para http, net.tcp en IIS.
He desactivado mi firewall. He corrido aspnet_regiis -i para .net 4.0
AYUDA!
Finalmente encontré que cambiar el modo de seguridad al transporte soluciona el problema.
Sin embargo, mi servicio tiene el modo de seguridad establecido en ninguno.
Entonces, ¿por qué mi cliente solo funciona con el modo de transporte de seguridad activado?
Típicamente, después de horas de la solución de problemas i pareció que los minutos problema después de presentados esto. Copié la configuración de WcfTestClient sobre la mía para encontrarla. He añadido a mi servicio y al cliente. Pero por alguna razón, el punto final del cliente no funcionará así. Cambiándola a El problema ha sido arreglado. Mi servicio todavía tiene modo de seguridad ninguno. ¿Por qué? –
WebDude
¿Ve el servicio escuchando en ese puerto? en netstat – rerun
Esto solo se ejecutó internamente. Hice varias llamadas exitosas a ese puerto. netstat mostró mi servicio escuchando en ese puerto. Según la sugerencia de Aliostad ahora he cambiado mi puerto a la gama 4000 – WebDude