Renovar la recompensa OTRA VEZ porque realmente necesito saber cómo hacer que funcione, o una respuesta definitiva sobre por qué no lo hará.Seeking WCF Duplex "TwoWay" Subscribe + Callback Example
I've added an alternative explanation of the problem here.
Tener un montón de tiempo para conseguir una de dos vías (IsOneWay = false) WCF cliente-servidor para trabajar en .Net 3/3.5.
Después de que el cliente se inscribe exitosamente con el servicio, el anuncio periódico del servicio() llama a los clientes inscritos. Ahora es cuando el cliente o el servidor se cuelga hasta que transcurre el SendTimeout del servidor, ajustado a 2 segundos. Luego, el lado del servidor tiene una excepción de tiempo de espera de la siguiente manera. Solo entonces el código de usuario del cliente RECIBE INMEDIATAMENTE LA LLAMADA DE MÉTODO e intenta devolver un valor. Para entonces, el socket del cliente se cancela y las cosas WCF fallan.
Me parece que algo en el cliente está bloqueando su cola local de WCF desde el procesamiento hasta que el socket agota el tiempo de espera, pero no lo suficientemente temprano como para cancelar la llamada al método local. Pero si se debe creer la excepción siguiente, el servidor está intentando enviar una operación al (¡inapropiado!) Y está expirando. Tal vez ese URI es solo el "Nombre" del cliente conectado remotamente, ya que WCF sabe que debe referirse a él a los fines del mensaje de error y simplemente parece indicar que no está cargando un URI. No puedo decir si el servidor falla primero o si el cliente falla primero.
He intentado agregar el seguimiento de WCF, pero no recibo mucha más información.
Similar sample code is here, pero debe haber sido demasiado para digerir. He experimentado con variaciones de ese código.
TimeoutException 'This request operation sent to http://schemas.microsoft.com/2005/12/ServiceModel/Addressing/Anonymous did not receive a reply within the configured timeout (00:00:00). The time allotted to this operation may have been a portion of a longer timeout. This may be because the service is still processing the operation or because the service was unable to send a reply message. Please consider increasing the operation timeout (by casting the channel/proxy to IContextChannel and setting the OperationTimeout property) and ensure that the service is able to connect to the client.'
Server stack trace:
at System.ServiceModel.Dispatcher.DuplexChannelBinder.SyncDuplexRequest.WaitForReply(TimeSpan timeout)
at System.ServiceModel.Dispatcher.DuplexChannelBinder.Request(Message message, TimeSpan timeout)
at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
Esto es para 3.0/3.5, no 4.0. Gracias. –
¿ha utilizado la localización wcf tanto en el cliente como en el servidor para ver si aparece algo? –
Sí, como mejor puedo interpretar los resultados, solo encuentro la misma excepción que se menciona arriba. Todos los pedidos y mensajes parecen correctos de lo contrario. –