È possibile ottenere un servizio WCF per restituire un 'errore' al client? Sono portato a credere che questo sia possibile quando si usa SOAP, ma mi piacerebbe tornare JSON.Servizio WCF per restituire errori formattati JSON
Idealmente, il codice di risposta HTTP dovrebbe essere impostato su qualcosa per indicare che si è verificato un errore e quindi i dettagli del problema sarebbero disponibili nella risposta JSON.
Attualmente, sto facendo qualcosa di simile:
[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...");
}
}
Dove TestFault
assomiglia a questo:
[DataContract]
public class TestFault
{
public TestFault(string message)
{
this.Message = message;
}
[DataMember]
public string Message { get; set; }
}
Non c'è niente di particolarmente speciale nella configurazione del servizio al momento.
Ciò comporta una risposta '400 Richiesta non valida', con un errore in formato HTML. (Quando ho includeExceptionDetailInFaults
, posso vedere la 'ragione ...' e dettagli della FaultException
, ma nessun dettaglio sul TestFault
.)
Il Web restituisce JSON ok quando un Exception
(o FaultException
) non è essere gettato.
Qualche suggerimento ..?
l'ennesimo tentativo di risolvere questo qui http://iainjmitchell.com/blog/?p=142 –