You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WCF与API通信出现死锁问题(基于HttpClient)求助

异步调用停滞问题排查与重入调用识别

系统组件与业务流程

我们的系统包含三个核心组件:

  • .NET Core 6 服务API(SERVICE)
  • .NET Framework 4.7.2 WCF服务(WCF)
  • .NET Core 6 网关API(GATEWAY):作为WCF服务的访问网关

业务执行的完整流程如下:

  1. GATEWAY 通过WCF调用 WCF/Admin.svc 执行任务
  2. WCF/Admin.svc 通过API调用 SERVICE 完成任务的部分环节
  3. SERVICE 通过API调用 GATEWAY 获取权限信息
  4. GATEWAY 通过WCF调用 WCF/Admin.svc 获取权限信息

所有调用均采用异步实现,未使用 .Result 同步阻塞方法,但流程在第4步陷入停滞状态。

测试场景对比

场景1:共享HttpMessageHandler(连接池方案)

首次执行流程完全正常,但第二次执行时流程停滞,第4步的请求始终无法发送,直至第3步请求超时。

场景2:每个请求新建HttpMessageHandler(不良实践)

无论执行多少次,流程始终能正常完成。

问题原因猜测

问题可能由以下情况导致:

  • 请求在 HttpClientHandler 中排队(存疑)
  • 同一HttpMessageHandler的重入调用触发了HttpClient的同步锁
  • WCF的节流机制在处理同一HttpMessageHandler的重入请求时被触发

核心疑问

能否识别当前调用是否为重入调用?


内容的提问来源于stack exchange,提问作者ghalaax

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 21:42:45