如何处理非SOAP错误消息?

时间:2016-04-22 12:51:41

标签: c# wcf sap

我有一个用于SAP系统中的一组服务的WCF客户端。对于某些错误,服务(据称)无法返回SOAP错误。相反,我得到这样的东西:

<?xml version="1.0"?>
<jpr:Fault xmlns:jpr="http://com.sap/aii/proxy/xiruntime/">com.sap.aii.proxy.xiruntime.core.ESPXISystemFaultException: Error encountered during processing of XI request message in inbound ESP; Hint: com.sap.engine.interfaces.webservices.runtime.RuntimeProcessException: Response did not arrive for request 8d4b2782-062a-11e6-b0f9-0000193763e3</jpr:Fault>

以上代表服务中的某种超时类型。我在此处提供的唯一一条信息是将其标识为超时,就是这段文字:Response did not arrive for request

有WSDL,但供应商并不认真对待它们。我还要求尝试给我一个SOAP错误,但他们坚持认为在这种情况下是不可能的。

我该如何处理这样的邮件?目前,我收到了这个例外链:

System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation.
---> System.ServiceModel.CommunicationException: Unrecognized message version.

1 个答案:

答案 0 :(得分:0)

这是可能的,但你必须使用一些低级别的位。您想要的位置在客户端通道中,您可以在通道中安装组件以处理此类响应。请查看WCF Extensibility – Channels,了解如何创建协议频道。

之后,你可以创建自定义绑定堆叠通道,你有传输(必须存在),你的协议,编码器等...