WCF请求返回错误的响应

时间:2019-06-03 07:59:33

标签: c# wcf

我有一个C#应用程序,客户端使用wcf与服务器对话。客户端每隔X秒在后台(通过WCF)向服务器调用Ping方法。以下错误已重现几次(针对不同的方法调用):

System.ServiceModel.ProtocolException:已收到操作'http://tempuri.org/IMyInterface/PingServerResponse'对操作'MyMethodToServer'的答复消息。但是,您的客户代码需要执行操作'http://tempuri.org/IMyInterface/MyMethodToServerResponse'。

MyMethodToServer不一致,并且属于不同的方法。 请求收到不同的响应怎么会发生?

3 个答案:

答案 0 :(得分:3)

我认为您的异步通信存在一个相当混乱的问题,主要建议(因为您的问题不太清楚)是尝试识别每个请求,接听电话并等待它们,进行异步通信并获得有几种使用线程的方法。

正如您所介绍的,这是一个典型的体系结构问题。

如果您提供更多代码,我可以在我的答案中建议一些代码修复问题,我很乐意更新我的答案。

答案 1 :(得分:2)

如果这种情况是随机发生的,而不是持续发生,那么您可能是在负载平衡的设置中运行,并且仅将更新部署到了其中一台服务器上?

答案 2 :(得分:1)

猜测:您的客户端使用相同的连接并行执行两个请求。所以发生的是:

  1. 线程1发送请求ARequest
  2. 线程2发送请求BRequest
  3. 服务器发送回复BReply
  4. 线程1在期待AReply的同时收到BReply答复

如果您在服务器上有请求日志,很容易确认-您可能会看到两个请求都在客户端主机遇到问题的情况下短暂延迟了

我认为MaxConcurrentCallConcurrencyMode在这里可能是相关的(尽管我很久没有接触WCF了)