Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

WCF 4.0 - Returning JSON WebFaultException with REST Service Template

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?

like image 607
Brandon Avatar asked Jun 06 '11 22:06

Brandon


1 Answers

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)]
like image 152
pinvoke Avatar answered Oct 26 '22 22:10

pinvoke