Tengo una aplicación Silverlight 4 que se comunica con un servidor que ejecuta IIS 7.5 que aloja varios de mis propios servicios WCF. La aplicación funciona felizmente el 99% del tiempo, pero los usuarios informan que algunas veces al día la aplicación se congelará o se generarán mensajes de error en varios puntos de la aplicación.Problemas intermitentes de comunicación entre el cliente de Silverlight y el servicio WCF
Encendí WCF rastreo y los siguientes errores:
<Exception>
<ExceptionType>System.ServiceModel.ProtocolException, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</ExceptionType>
<Message>The number of bytes available is inconsistent with the HTTP Content-Length header. There may have been a network error or the client may be sending invalid requests. </Message>
<StackTrace>
at System.ServiceModel.Channels.HttpInput.ReadBufferedMessage(Stream inputStream)
at System.ServiceModel.Channels.HttpInput.ParseIncomingMessage(Exception& requestException)
at System.ServiceModel.Channels.HttpChannelListener.HttpContextReceived(HttpRequestContext context, Action callback)
at System.ServiceModel.Activation.HostedHttpTransportManager.HttpContextReceived(HostedHttpRequestAsyncResult result)
at System.ServiceModel.Activation.HostedHttpRequestAsyncResult.HandleRequest()
at System.ServiceModel.Activation.HostedHttpRequestAsyncResult.BeginRequest()
at System.ServiceModel.Activation.HostedHttpRequestAsyncResult.OnBeginRequest(Object state)
at System.Runtime.IOThreadScheduler.ScheduledOverlapped.IOCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* nativeOverlapped)
at System.Runtime.Fx.IOCompletionThunk.UnhandledExceptionFrame(UInt32 error, UInt32 bytesRead, NativeOverlapped* nativeOverlapped)
at System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* pOVERLAP)
</StackTrace>
</Exception>
Entonces me encontré violinista en la máquina del usuario y se encontró estaban produciendo los siguientes errores:
HTTP/1.1 504 Fiddler - Receive Failure
Content-Type: text/html; charset=UTF-8
Connection: close
Timestamp: 18:24:21.941
ReadResponse() failed: The server did not return a response for this request.
De algunas investigaciones se ve como si hubiera algún problema de comunicación entre el cliente y el servidor. El servidor es un servidor privado virtual con el que nunca he tenido problemas y, al mirar los registros, nunca se ha agotado al máximo el procesador/memoria.
Mis preguntas son: 1. ¿Hay algo que pueda hacer un seguimiento a lo que está sucediendo con más detalle o cualquier servidor IIS o relacionados que puede ajustar para evitar este error 2. En mi aplicación Silverlight es que hay alguna manera de que puede esperar un período de tiempo específico (por ejemplo, 30 segundos) y si no hay respuesta se ha recibido cancelar la petición actual y vuelve a intentarlo
¿te revisadas, si su método de servicio arroja una excepción? – Jehof
Jehof: el método de servicio no arroja una excepción. Puede hacer exactamente la misma llamada al método de servicio después del error y funcionará. –
¿Marcó, el registro de eventos del servidor? – Jehof