Tengo un servicio REST consumido por un cliente .Net WCF.Obteniendo los detalles de error de WCF REST
Cuando se encuentra un error, el servicio REST devuelve una solicitud incorrecta HTTP 400 con el cuerpo de la respuesta que contiene detalles serializados JSON.
Si ejecuto la solicitud usando Fiddler, Javascript o directamente desde C#, puedo acceder fácilmente al cuerpo de la respuesta cuando ocurre un error.
Sin embargo, estoy usando un WCF ChannelFactory
con 6 interfaces bastante complejas. La excepción lanzada por este proxy siempre es un ProtocolException
, sin detalles útiles.
¿Hay alguna manera de obtener el cuerpo de respuesta cuando recibo este error?
actualización
Soy consciente de que hay un montón de diferentes maneras de hacer esto utilizando .Net y que hay otras maneras de conseguir la respuesta de error. Son útiles para saber pero no responden a esta pregunta.
Los servicios REST que estamos utilizando cambiarán y, cuando lo hagan, las interfaces complejas se actualizarán. Usar el ChannelFactory
con las nuevas interfaces significa que obtendremos excepciones de tiempo de compilación (en lugar de tiempo de ejecución) y facilitaremos mucho el mantenimiento y la actualización del código.
¿Hay alguna manera de obtener el cuerpo de la respuesta para un estado HTTP de error al usar canales WCF?
Al leer su explicación, parece que no tiene control sobre el servicio REST en sí, ¿es correcto? –
En realidad, en este caso sí, pero es difícil de cambiar. Nuestro problema es la complejidad: WCF ChannelFactory ofrece una forma realmente agradable de gestionarlo con interfaces. Lo molesto es que descarta el cuerpo de la respuesta cuando el estado del encabezado HTTP es distinto a 200. Cuando obtenemos un error del servicio REST, devuelve un estado HTTP 400 o 500 con detalles en el cuerpo. – Keith