Espaços de nome múltiplos em uma mensagem de falha de sabão causando falha na desserialização do FaultException

Estamos nos conectando a um serviço da Web e a mensagem de falha que estamos recebendo não está desserializando (de jeito nenhum) e nenhuma versão de classe que eu possa fazer desserializará corretamente. Nós não temos controle sobre o lado do servidor das coisas. O servidor não permite a descoberta, portanto, incluir? WSDL no final da URL do nó de extremidade resulta em um erro, não em um WSDL.

[Fiddler] [1] mostra que a mensagem de falha que está voltando parece com:

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:eGov="http://eGov.gov" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
  <soapenv:Body>
    <soapenv:Fault>
    <faultcode>Client</faultcode>
    <faultstring/>
      <detail>
        <eGov:eGov2Exception>
          <eGov:ErrorClassification>SOME_ERROR</eGov:ErrorClassification>
          <eGov:ErrorCode>SOME_ERROR_CODE</eGov:ErrorCode>
          <eGov:ErrorMessage>Your request was unsuccessful. blah blah blah.</eGov:ErrorMessage>
        </eGov:eGov2Exception>
      </detail>
    </soapenv:Fault>
  </soapenv:Body>
</soapenv:Envelope>

No entanto, nenhuma classe que fizemos (tentando xsd.exe, svcutil e outros, incluindo código que escrevemos do zero) pode desserializá-lo quando tentamos pegá-lo com:

catch (FaultException<eGov2ExceptionType> exp)
  {
     // Never stops here. 
  }
catch (FaultException<AllOtherAttemptedClasses> exp)
  {
     // Never stops here. 
  }
catch (SoapException se)
  {
     // Never stops here. 
  }
catch (FaultException exp)
  {
     //Always gets caught here. 
  }

Apenas a captura de base FaultException será chamada, o que significa que perderemos o conteúdo da mensagem de falha que está sendo enviada. Algumas das classes que escrevi serão serializadas muito de perto para o exemplo acima, mas falham em desserializá-lo, então nossa suspeita é de que há um problema de namespace.

Questões:

1 - Como você escreveria isso?

2 - Este é um erro / problema comum no WCF?

[1]:http://www.fiddler2.com/fiddler2/ Violinista

questionAnswers(3)

yourAnswerToTheQuestion