客户端在接收异步WCF响应之前关闭TCP连接

客户端在接收异步WCF响应之前关闭TCP连接,wcf,silverlight-4.0,Wcf,Silverlight 4.0,我们有一个Silverlight 4.0应用程序,可以多次调用我们的WCF服务。我们有很多用户,大多数情况下都很好,但是有一个用户遇到了一个问题,这个问题似乎局限于单个(Windows7)机器上的一个特定异步调用。它始终是可复制的,但仅适用于来自该机器的呼叫。WCF请求已发送,但在暂停后,Silverlight应用程序会抛出以下内容: Message: [HttpWebRequest_WebException_RemoteServer] Arguments: NotFound Stack Tra

我们有一个Silverlight 4.0应用程序,可以多次调用我们的WCF服务。我们有很多用户,大多数情况下都很好,但是有一个用户遇到了一个问题,这个问题似乎局限于单个(Windows7)机器上的一个特定异步调用。它始终是可复制的,但仅适用于来自该机器的呼叫。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会报告“会话状态:中止”,这看起来就像是对相同基础问题的另一种解释(客户端意外地拔出了连接插头)


我们将非常感谢任何关于为什么会发生这种情况或我们可以做什么来进一步调查的建议。

当我们为用户创建新的Windows配置文件时,问题似乎消失了