¿Es posible obtener un servicio WCF para devolver un 'error' al cliente? Me hacen creer que esto es posible cuando utilizo SOAP, pero me gustaría regresar con JSON.Servicio WCF para devolver fallas con formato JSON
Idealmente, el código de respuesta HTTP se establecería en algo para indicar que se produjo un error, y luego los detalles del problema estarían disponibles en la respuesta JSON.
Actualmente, estoy haciendo algo como esto:
[ServiceContract]
public class MyService
{
[OperationContract]
[WebInvoke(BodyStyle = WebMessageBodyStyle.Wrapped, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
[FaultContract(typeof(TestFault))]
public MyResult MyMethod()
{
throw new FaultException<TestFault>(new TestFault("Message..."), "Reason...");
}
}
Dónde TestFault
se parece a esto:
[DataContract]
public class TestFault
{
public TestFault(string message)
{
this.Message = message;
}
[DataMember]
public string Message { get; set; }
}
No hay nada particularmente especial en la configuración del servicio en el momento.
Esto da como resultado una respuesta '400 Bad Request', con un error de formato HTML. (Cuando includeExceptionDetailInFaults
, puedo ver la 'Razón ...' y detalles de la FaultException
, pero no dio detalles sobre la TestFault
.)
La web devuelve JSON bien cuando un Exception
(o FaultException
) no está siendo arrojado.
Cualquier sugerencia ...?
otro intento de resolver esto aquí http://iainjmitchell.com/blog/?p=142 –