WCF调用远程服务触发HTTP请求被中止错误 求排查方案
WCF服务调用报错排查方向
你收到的报错信息:
- 发往[服务地址URL]的HTTP请求已中止。该问题可能是请求仍在处理时本地通道被关闭导致,若无需该行为,请修改代码避免在请求操作未完成时关闭通道。
- 查找接收传入消息的通道失败,可能是端点或SOAP action未找到。
根据你提供的客户端与服务端配置,可按以下优先级排查:
- 配置语法校验
先修正服务端web.config的语法错误:<services>节点下存在多余的</service>闭合标签,删除该标签后重启服务端站点再重试。 - 端点匹配校验
- 确认客户端配置的服务地址
https://path/Services/LinkTableService.svc和远程服务实际部署的路径完全一致,注意大小写、路径层级、后缀名不要有出入。 - 核对客户端服务引用生成的契约
LinkTable_L2.ILinkTableService与服务端契约AppName_L2_WCF.ServiceContracts.ILinkTableService的命名空间、方法签名完全匹配,契约不匹配会直接触发通道查找失败错误。
- 确认客户端配置的服务地址
- 安全配置校验
- 你两端的绑定都配置了
TransportWithMessageCredential的安全模式,服务端还开启了自定义用户名密码校验,确认调用服务的代码中已经正确传入了符合服务端校验规则的用户名、密码凭证,无有效凭证会被服务端直接拒绝请求。 - 确认客户端所在服务器信任服务端HTTPS站点部署的SSL证书,证书不被信任会导致SSL握手失败,触发请求提前中止的报错。
- 你两端的绑定都配置了
- 调用逻辑校验
检查服务调用代码是否存在提前释放通道的问题:不要在异步调用未拿到返回结果时就执行通道Close()/Dispose()操作,也不要把服务代理对象放在using块中不等待调用完成,这类操作都会直接触发通道提前关闭的报错。 - SOAP Action校验
用Fiddler等抓包工具抓取客户端发出的请求,核对请求的SOAP Action头和服务端WSDL中对应方法定义的SOAP Action完全一致,Action不匹配会触发端点未找到的错误。
内容的提问来源于stack exchange,提问作者smtaz1279
相关产品推荐
相关产品推荐

