Мы подключаемся к веб-службе, а сообщение о неисправности, которое мы получаем, не является десериализацией (вообще), и никакой версией класса, который я могу make будет десериализоваться правильно. Мы не контролируем серверную сторону вещей. Сервер не разрешает обнаружение, поэтому добавление WSDL в конец URL-адреса конечной точки приводит к ошибке, а не к WSDL.Множество пространств имен в сообщении о неисправности мыла, вызывающем десериализацию исключения FaultException для отказа
[Скрипач] [1] показывает сообщение о неисправности возвращается выглядит следующим образом:
<?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>
Но ни один класс мы сделали (пытаясь xsd.exe, SvcUtil и другие, включая код мы написали с нуля) может десериализации, когда мы пытаемся поймать его:
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.
}
только базовый FaultException улов будет вызван, то есть мы теряем содержимое FaultMessage отправки. Некоторые из классов, которые я написал, будут сериализоваться очень близко к образцу выше, но не могут десериализовать его, поэтому наше подозрение в том, что проблема с пространством имен.
Вопросы:
1 - Как бы вы написать это?
2 - Это распространенная ошибка/проблема с WCF?
[1]: http://www.fiddler2.com/fiddler2/ Скрипач
Возможный обман http://stackoverflow.com/questions/4140030/c-sharp-wcf-catch-fault-exceptions-of-base-type http: // stackoverflow.com/questions/9463802/wcf-custom-fault-exception-not-catch-correct-in-client – Ruskin