L'extraction de détail à partir d'une WCF FaultException réponse

Je suis avec succès en collaboration avec un tiers service soap. J'ai ajouté une référence de service à un web service soap qui a générés automatiquement les classes.

Lorsqu'une erreur survient, il renvoie une réponse soap comme ceci:

<SOAP-ENV:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
   <SOAP-ENV:Body>
      <SOAP-ENV:Fault>
         <faultcode>SOAP-ENV:Client</faultcode>
         <faultstring xsi:type="xsd:string">Error while reading parameters of method 'Demo'</faultstring>
         <detail xsi:type="xsd:string">Invalid login or password. Connection denied.</detail>
      </SOAP-ENV:Fault>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Je peux rattraper l'erreur, mais pas d'extraire le détail. J'ai essayé le code suivant:

catch (FaultException ex)
{
    MessageFault msgFault = ex.CreateMessageFault();
    var elm = msgFault.GetDetail<string>();
    //throw Detail
}

Cependant il des Erreurs avec la suite que le détail de nœud n'est pas un objet:

Expecting element 'string' from namespace 'http://schemas.datacontract.org/2004/07/MyDemoNamespace'.. Encountered 'Text'  with name '', namespace ''.

Ceci est la troisième partie de l'API, donc je ne peux pas changer la réponse.

OriginalL'auteur John | 2013-05-13