2010-02-18 4 views
3

je dois consommer un service Web tiers en utilisant SOAP. Il était facile de l'utiliser avec WCF, mais maintenant j'ai un problème avec les fautes SOAP. Le service envoie-moi un défaut SOAP incorrect:Comment gérer une erreur SOAP incorrecte dans WCF?

<?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> 

L'erreur est que le <faultcode> ne doit pas avoir un espace de noms:

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/'. 

Je ne peux pas changer le service Web d'origine - mais il n'y a rien dans WCF je peux utiliser pour gérer encore ces messages de défaut d'une certaine façon sans obtenir CommunicationException tout le temps?

Répondre

-1

Je crois que la vieille école classe System.Web.Services.SoapHttpClientProtocol est plus tolérant non-up-to-tabac ou standard défauts que la WCF System.ServiceModel.Channels.ServiceChannel.HandleReply/System.ServiceModel .Channels.MessageFualt.CreateFault.

FWIW.

Questions connexes