Mam aplikację Silverlight 4, która komunikuje się z serwerem z programem IIS 7.5, który obsługuje wiele własnych usług WCF. Aplikacja działa szczęśliwie w 99% przypadków, ale użytkownicy zgłaszają, że kilka razy dziennie aplikacja zawiesi się lub komunikaty o błędach będą generowane w różnych punktach aplikacji.Sporadyczne problemy z komunikacją między klientem Silverlight a usługą WCF
Włączyłem WCF śledzenie i wystąpić następujące błędy:
<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>
I pobiegł Skrzypek na komputerze użytkownika i stwierdzono następujące błędy występujące:
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.
Z niektórych badań wygląda tak jak istnieje problem z komunikacją między klientem a serwerem. Serwer jest serwerem Virtual Private, z którym nigdy nie miałem żadnych problemów, a od przeglądania logów nigdy nie jest on maksymalny w stosunku do procesora/pamięci.
Moje pytania są następujące: 1. Czy jest coś mogę zrobić, aby śledzić, co dzieje się w sposób bardziej szczegółowy lub cokolwiek związane z IIS lub serwer mogę ustawić, aby uniknąć tego błędu 2. W mojej aplikacji Silverlight jest jakiś sposób ja można czekać określoną ilość czasu (np 30 sekund), a jeśli nie odpowiedź została otrzymaliśmy anulować bieżące żądanie i spróbuj ponownie
cZY zaznaczone, jeśli Twoja metoda obsługi zgłasza wyjątek? – Jehof
Jehof - metoda usługi nie rzuca wyjątku. Możesz wykonać to samo wywołanie metody usługi po błędzie i to zadziała. –
Czy sprawdziłeś, dziennik zdarzeń serwera? – Jehof