Tôi có ứng dụng Silverlight 4 giao tiếp với máy chủ chạy IIS 7.5 lưu trữ một số dịch vụ WCF của riêng tôi. Ứng dụng chạy một cách vui vẻ 99% thời gian nhưng người dùng báo cáo rằng một vài lần một ngày ứng dụng sẽ đóng băng hoặc thông báo lỗi sẽ được tạo ra tại các điểm khác nhau trong ứng dụng.Sự cố liên lạc giữa máy khách Silverlight và dịch vụ WCF liên tục
Tôi bật WCF truy tìm và các lỗi sau đây xảy ra:
<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>
sau đó tôi chạy Fiddler trên máy tính của người dùng và phát hiện các lỗi sau đây đã xảy ra:
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.
Từ một số nghiên cứu có vẻ như có một số vấn đề giao tiếp giữa máy khách và máy chủ. Máy chủ là một máy chủ riêng ảo mà tôi chưa bao giờ gặp phải bất kỳ sự cố nào và nhìn vào nhật ký, nó không bao giờ tối đa hóa bộ xử lý/bộ nhớ một cách khôn ngoan.
Câu hỏi của tôi là: 1. Tôi có thể làm gì để theo dõi những gì đang diễn ra chi tiết hơn hoặc bất kỳ IIS hoặc máy chủ nào tôi có thể điều chỉnh để tránh lỗi này 2. Trong ứng dụng Silverlight của tôi có cách nào đó có thể phải đợi một khoảng thời gian cụ thể (ví dụ: 30 giây) và nếu không có phản ứng đã được nhận được hủy yêu cầu hiện tại và thử lại
bạn có kiểm tra, nếu phương pháp dịch vụ của bạn ném một ngoại lệ? – Jehof
Jehof - phương thức dịch vụ không ném ngoại lệ. Bạn có thể thực hiện chính xác phương thức dịch vụ gọi sau khi lỗi và nó sẽ hoạt động. –
Bạn đã kiểm tra, nhật ký sự kiện của máy chủ chưa? – Jehof