I am using the WCF REST Service Template 40(CS). I am throwing WebFaultExceptions as such:
throw new WebFaultException<string>("Error Message", HttpStatusCode.BadRequest);
However, when I test this with my client, everything is being returned as a Http Status Code of 500 and the response is XML. I can see the error message in the XML response. When I make a call correctly, I get a 200 response and the response is in JSON which is correct given the way my config and ServiceContract are setup.
The only way I can get the HTTP Status Code to be 400 for the Bad Request is to do this:
WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.BadRequest;
I still cannot get the exception to return as JSON.
Edit Adding signature for more information:
[OperationContract]
[WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json, UriTemplate = "myendpoint")]
Is there an easy way to accomplish this?