Я пытаюсь перехватить данное исключение FaultException на клиенте WCF. Мне в основном нужно извлечь внутреннее описание из класса неисправности, чтобы затем я мог упаковать его в другое исключение, чтобы верхние уровни могли делать что угодно.
Я успешно делал это несколько раз, но на этот раз отличает то, что ошибка объявлена как массив, как вы можете видеть из атрибута ссылки на службу, объявленного поверх метода, который вызывает исключение:
[System.ServiceModel.FaultContractAttribute(typeof(FaultClass[]), Action = "http://whatever/", Name = "whateverBusinessFault")]
Это мой код:
try
{
// call service here
}
catch (FaultException<FaultClass[]> ex)
{
if (ex.Detail != null && ex.Detail.Length > 0)
{
throw new CustomException(ex.Detail[0].description);
}
else
{
throw;
}
}
Проблема Деталь (которая представляет собой массив) всегда возвращается пустой в коде, даже если я могу видеть данные (поле описания и т. Д.) В SOAP ответ от трассировки WCF.
Итак, материал, который мне нужен, определенно возвращается, но по какой-то причине либо он не десериализуется, либо я не могу добраться до него из кода.
Любая помощь приветствуется!
ОБНОВЛЕНИЕ :
Попытка с предложением @Darin, но безуспешно, строка, которую я извлекаю из XmlReader, - "/ r / n":
var sb = new StringBuilder();
using (XmlReader reader = fault.GetReaderAtDetailContents())
{
while (reader.Read())
sb.AppendLine(reader.ReadOuterXml());
}
var detail = sb.ToString();
Похоже, что раздел подробностей вообще не появляется!