使用同一客户端实例对WCF服务进行多方法调用

时间:2018-07-16 14:11:24

标签: wcf wcf-client nettcpbinding

我的WPF应用程序正在使用单个客户端对象调用WCF服务。发送请求并且在下一个请求之前立即有响应时,这种方法可以正常工作。

当我发送第一个请求时,需要3分钟才能完成计算任务并返回结果。同时,我的WPF应用程序发送了第二个请求(ping请求每3秒发送一次)。这时,出现以下错误,WPF应用程序断开连接:

  

服务器未提供有意义的答复:这可能是由于合同不匹配,会话提前关闭或服务器内部错误

     

通信对象System.ServiceModel.Channels.ServiceChannel由于处于故障状态,因此无法用于通信。

我的服务行为如下:

List("30,40,50")

我尝试了不同的组合,但无效。

2 个答案:

答案 0 :(得分:0)

如果您从singel客户端进行多个并发调用,则除了InstanceContextMode之外,还应将ConcurrencyMode设置为Multiple。 请注意,如果将InstanceContextMode设置为Single,则您的服务将充当Singleton,那么您应该注意操纵变量,因为它会在其他调用上反映出来..

答案 1 :(得分:0)

您的Ping请求不应使用相同的频道。它应该打开自己的频道。理想情况下,每个独立的请求都应打开其自己的通道(或者,您可以构建一个排队系统)。但是从两个不同的线程访问同一通道将无法正常工作。