我有一个Silverlight 4应用程序,它与运行IIS 7.5的服务器通信,该服务器承载了许多我自己的WCF服务。应用程序在99%的时间内运行愉快,但用户报告应用程序每天会冻结几次,或者在应用程序的不同位置生成错误消息。
我启用了WCF跟踪并发生以下错误:
<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>
然后我在用户的机器上运行Fiddler,发现发生了以下错误:
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.
从某些研究来看,客户端和服务器之间存在一些通信问题。服务器是一个虚拟专用服务器,我从来没有遇到过任何麻烦,从查看日志来看,处理器/内存从未达到最大化。
我的问题是: 1.我可以做些什么来更详细地跟踪发生的事情或我可以调整的任何IIS或服务器相关的内容以避免此错误 2.在我的Silverlight应用程序中有一些方法可以等待特定的时间(例如30秒),如果没有收到响应,请取消当前请求并再试一次
答案 0 :(得分:0)