Ich habe einen WCF-Client für eine Reihe von Diensten in einem SAP-System. Bei bestimmten Fehlern können die Dienste (angeblich) keinen SOAP-Fehler zurückgeben. Stattdessen erhalte ich etwas in der Art:Wie wird mit einer Nicht-SOAP-Fehlermeldung verfahren?
<?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>
Das obige Symbol steht für einen bestimmten Timeout-Typ im Service. Die einzige Information, die ich hier zur Verfügung habe, um sie als Timeout zu identifizieren, ist folgender Text: Response did not arrive for request
Es gibt WSDLs, aber der Hersteller nimmt sie nicht sehr ernst. Ich habe auch darum gebeten, mir einen SOAP-Fehler zu geben, aber sie bestehen darauf, dass es in diesem Fall nicht möglich ist.
Wie kann ich eine Nachricht wie diese behandeln? Derzeit erhalte ich diese Ausnahmekette:
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation.
---> System.ServiceModel.CommunicationException: Unrecognized message version.
es Handle wie? Es scheint der einfachste Weg zu sein, den Aufruf in einen try-catch-Block zu setzen und die Ausnahme zu behandeln. – Tim
@Tim eine TargetInvocationException abfangen ist zu breit, ich muss sicherstellen, dass ich nur diese spezifische Nachricht abfangen. – Stijn