wcf - 使用同一客户端实例对 WCF 服务进行多个方法调用
问题描述
我的 WPF 应用程序使用单个客户端对象调用 WCF 服务。当发送请求并且在下一个请求之前立即响应时,这可以正常工作。
当我发送第一个请求时,完成计算任务并返回结果需要 3 分钟。同时从我的 WPF 应用程序发送第二个请求(每 3 秒发送一次 ping 请求)。此时,我收到以下错误并且 WPF 应用程序断开连接:
服务器没有提供有意义的回复:这可能是由合同不匹配、会话过早关闭或内部服务器错误引起的
通信对象 System.ServiceModel.Channels.ServiceChannel 不能用于通信,因为它处于故障状态。
我的服务行为是这样写的:
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, IncludeExceptionDetailInFaults=true)]
我尝试了不同的组合,但它不起作用。
解决方案
您的 Ping 请求不应使用相同的通道。它应该打开它自己的频道。理想情况下,每个独立的请求都应该打开它自己的通道(或者,您可以构建一个排队系统)。但是从两个不同的线程访问同一个通道是行不通的。
推荐阅读
- android - 带有 Firebase UI 的 Firebase 电话身份验证存在 SafetyNet 问题
- python-3.x - 如何矢量化此 python 代码或使其高效?使用映射转换数组
- python - 对齐 Word 表格
- vim - 在 Vim 模式下如何从剪贴板粘贴到 Google Colab
- amazon-s3 - CloudFront 创建失效更新顺序和时间
- java - camel-cxf 不起作用:ClassNotFoundException
- c# - 如何使用 Roslyn 分析器验证 Projects 属性默认命名空间
- red - 如何使匿名函数在 Red/Rebol 中工作
- c# - 使用 c# Windows 表单向/从 SQL Server 上传和下载文件到 axAcroPDF/从 axAcroPDF 上传和下载文件
- azure - ADF - VARCHAR 列不需要的日期时间转换