我们有一个Silverlight 4.0应用程序,可以对我们的WCF服务进行多次调用。我们有很多用户,大多数情况下都很好,但是一个用户遇到的问题似乎仅限于单个(Windows 7)计算机上的特定异步调用。它总是可重现的,但仅适用于该机器的调用。发送了WCF请求,但是在暂停后,Silverlight应用程序抛出了这个:
Message: [HttpWebRequest_WebException_RemoteServer]
Arguments: NotFound
Stack Trace: at System.ServiceModel.AsyncResult.End[TAsyncResult](IAsyncResult result)
at System.ServiceModel.Channels.ServiceChannel.EndCall(String action, Object[] outs, IAsyncResult result)
at System.ServiceModel.ClientBase`1.ChannelBase`1.EndInvoke(String methodName, Object[] args, IAsyncResult result)
at MyContractClientChannel.EndApplicationSave(IAsyncResult result)
at MyServiceContract.EndApplicationSave(IAsyncResult result)
at MyServiceContractClient.OnEndApplicationSave(IAsyncResult result)
at System.ServiceModel.ClientBase`1.OnAsyncCallCompleted(IAsyncResult result)
发起呼叫如下所示:
using (new OperationContextScope((IContextChannel)Client.InnerChannel))
{
Client.ApplicationSaveAsync(request, callback);
}
Client.ApplicationSaveAsync是通常自动生成的代码,它调用System.ServiceModel.ClientBase.InvokeAsync。
当我们看到与WireShark的对话时,我们看到发送的请求数据包(大约需要两秒钟),然后延迟大约十秒钟。然后是奇怪的部分。在一台工作的机器上我们看到响应数据包从服务器下来,但在问题机器上我们看到客户端突然发送一个空数据包,其中设置了TCP FIN标志(在收到任何响应之前)。我们无法理解为什么会这样做。当我们尝试使用Fiddler而不是WireShark时,Fiddler会报告“会话状态:已中止”,这看起来只是对同一根本问题的另一种解释(客户端意外地拔掉了连接上的插头)。
我们非常感谢有关为何可能发生这种情况或我们可以采取哪些措施进一步调查的建议。
答案 0 :(得分:0)
当我们为用户创建新的Windows配置文件时,问题似乎消失了。