【发布时间】:2018-07-16 14:11:23
【问题描述】:
我的 WPF 应用程序正在使用单个客户端对象调用 WCF 服务。当发送请求并且在下一个请求之前立即响应时,这可以正常工作。
当我发送第一个请求时,需要 3 分钟才能完成计算任务并返回结果。同时从我的 WPF 应用程序发送第二个请求(每 3 秒发送一次 ping 请求)。此时,我收到以下错误并且 WPF 应用程序断开连接:
服务器没有提供有意义的回复:这可能是由于合同不匹配、会话过早关闭或内部服务器错误引起的
通信对象 System.ServiceModel.Channels.ServiceChannel 无法用于通信,因为它处于故障状态。
我的服务行为写如下:
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, IncludeExceptionDetailInFaults=true)]
我尝试了不同的组合,但它不起作用。
【问题讨论】:
-
“我的 WPF 应用程序正在使用单个客户端对象调用 WCF 服务。”我猜您是在需要更改此设置时才发现的。为每个通话创建一个。
-
我尝试了 PerCall,并发模式为 Multiple。第一次连接 WCF 服务时它正在抛出。是否希望我将并发模式保持为单一模式并重试?
-
我的意思是您需要为每个要拨打的电话创建一个客户端实例。
-
是的,我想到了。但问题是,它已经是现有的应用程序,我正在为此添加一个新功能。我无法改变无处不在。这个不允许。另外,它有回调,不同的线程调用WCF服务(ping线程)等。还有其他方法吗?
标签: wcf wcf-client nettcpbinding