Как получить доступ к деталям ошибок SOAP 1.1 из клиента WCF (без контракта ошибок) - PullRequest
6 голосов
/ 25 января 2010

Я обращаюсь к веб-службе SOAP 1.1, и она возвращает ошибку. Насколько я вижу, веб-сервис не определяет какой-либо договор о сбое в WSDL. Мой клиент WCF сопоставляет ошибку с FaultException (а не с FaultException ). Это все имеет смысл. Проблема в том, что служба возвращает некоторую полезную диагностическую информацию в элементе detail ошибки, к которому я хотел бы получить доступ, чтобы я мог сбросить ее в журнал трассировки. Кажется, что FaultException не предоставляет никакого доступа к элементу detail, возможно потому, что без контракта на ошибку он не знает, что там находится.

Но мне не нужно десериализовывать подробный XML - только необработанный XML как строка подойдет для диагностических целей.

Есть ли способ получить доступ к подробному XML из клиента WCF в этом сценарии?

1 Ответ

11 голосов
/ 25 января 2010

Как подробно здесь: http://www.theruntime.com/blogs/jacob/archive/2008/01/28/getting-at-the-details.aspx

Вы можете использовать этот обходной путь для получения подробной информации:

} catch (FaultException soapEx)
{    
    MessageFault mf = soapEx.CreateMessageFault();    
    if (mf.HasDetail)
    {    
        XmlDictionaryReader reader = mf.GetReaderAtDetailContents();    
        ...    
    }    
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...