Voy a llamar a un servicio WCF, que bajo ciertas condiciones devuelve un AggregateException, con todos los problemas que ocurrieron a través de la llamadaAggregateException y WCF
Por otro lado, me estoy poniendo un FaultException (lo cual tiene sentido , porque WCF solo entiende estas excepciones). El problema es que el detalle del contrato no es una excepción agregada. Es como si, de forma predeterminada, WCF obtiene la primera excepción para la lista de excepción de Extract de Aggregate (InnerExceptions), y lo encapsula. Entonces, en el lado del cliente, estoy obteniendo la primera excepción de la lista. Después de investigar un poco, hice lo siguiente:
añadido este al contrato
[FaultContract(typeof(AggregateException))]
A continuación, en la llamada de servicio ..
try
{
BaseService.Blabla.Delete(item);
}
catch (AggregateException ex)
{
throw new FaultException<AggregateException>(ex);
}
Pero, por otro lado, que es la siguiente :
catch (FaultException<AggregateException> ex)
{
string msg = string.Empty;
foreach (var innerException in ex.Detail.InnerExceptions)
{
msg += innerException + Environment.NewLine;
}
MessageBox.Show(msg);
}
catch (Exception ex)
{
throw ex;
}
Está entrando en la declaración catch de excepción en su lugar, una d conseguir un error como este (que obviamente es un error aleatorio, porque yo no tengo problemas de conexión, y la depuración de esto devuelve inmediatamente, 4 minutos no pasan):
The socket connection was aborted. This could be caused by an error processing your message or a receive timeout being exceeded by the remote host, or an underlying network resource issue. Local socket timeout was '00:03:59.9939994'. : An existing connection was forcibly closed by the remote host
¿Qué me falta?
Ha intentado entrar por el depurador para determinar qué excepción que realmente está siendo lanzado? –