How to handle incorrect SOAP fault in WCF?
16,820
Yes, but it's not exactly elegant. See the message inspector code at the bottom of this forum post:
http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/435850aa-bf74-4158-a29a-256135207948
Basically, you can take the incoming message and alter it so that it can be handled by WCF.
Author by
chris166
Updated on June 20, 2022Comments
-
chris166 almost 2 years
I have to consume to a third-party web service using SOAP. It was easy to get it to work with WCF, but now I have a problem with SOAP faults. The service sends me an incorrect SOAP fault:
<?xml version="1.0" encoding="utf-8" ?> <SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Body> <SOAP-ENV:Fault> <SOAP-ENV:faultcode>14</SOAP-ENV:faultcode> <SOAP-ENV:faultstring>Unknown Function</SOAP-ENV:faultstring> </SOAP-ENV:Fault> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
The error is that the
<faultcode>
must not have a namespace:System.ServiceModel.CommunicationException : Server returned an invalid SOAP Fault. Please see InnerException for more details. ----> System.Xml.XmlException : Start element 'faultcode' from namespace '' expected. Found element 'SOAP-ENV:faultcode' from namespace 'http://schemas.xmlsoap.org/soap/envelope/'.
I can't change the original web service - but is there anything in WCF I can use to still handle these fault messages in some way without getting
CommunicationException
all the time? -
chris166 about 14 yearsThank you, that was exactly what I needed! And it's elegant enough :)