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?
In you web.config set the value of AutomaticFormatSelectionEnabled to false
<standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="false" />
Set the response format to json (which you have done already)
[WebGet(UriTemplate = "", ResponseFormat = WebMessageFormat.Json)]
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With