FaultException.Detail voltando vazio
Estou tentando capturar uma determinada FaultException em um cliente WCF. Basicamente, preciso extrair uma descrição interna da classe de falha para que eu possa empacotá-la em outra exceção para que as camadas superiores façam o que for.
Fiz isso com êxito várias vezes, o que a diferencia desta vez é que a falha é declarada como uma matriz, como você pode ver no atributo de referência de serviço declarado no topo do método que gera a exceção:
[System.ServiceModel.FaultContractAttribute(typeof(FaultClass[]), Action = "http://whatever/", Name = "whateverBusinessFault")]
Este é o meu código:
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;
}
}
Problema éDetalhe (que é uma matriz) está sempre voltando vazio no código, mesmo que eu possa ver os dados (campo de descrição etc.) na resposta SOAP do rastreamento do WCF.
Então, o que eu preciso está definitivamente voltando, mas, por algum motivo, não é desserializado ou não consigo acessar o código.
Qualquer ajuda apreciada!
ATUALIZAR:
Tentando com a sugestão do @Darin, mas sem sorte, a string que estou extraindo do XmlReader é "/ r / n":
var sb = new StringBuilder();
using (XmlReader reader = fault.GetReaderAtDetailContents())
{
while (reader.Read())
sb.AppendLine(reader.ReadOuterXml());
}
var detail = sb.ToString();
Parece que a seção de detalhes não está chegando!