Я пытаюсь поймать данное исключение 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.
Так что мне нужно определенно возвращаться, но по какой-то причине оно не десериализовано или я не могу добраться до него из кода.
Любая помощь приветствуется!
UPDATE
Попытка с предложением @Darin, но не повезло, строка, которую я извлекаю из XmlReader: "/ r / n":
var sb = new StringBuilder();
using (XmlReader reader = fault.GetReaderAtDetailContents())
{
while (reader.Read())
sb.AppendLine(reader.ReadOuterXml());
}
var detail = sb.ToString();
Похоже, что подробный раздел вообще не подходит!