MVC5 - WebAPI 2 - CamelCase JSON formatter stopped working when Controller changed to return HttpResponseMessage
asp.net-mvc-5, asp.net-web-api, asp.net-web-api2
Solution
Actual method that is called when you use Request.CreateResponse is this:
public static HttpResponseMessage CreateResponse<T>(
this HttpRequestMessage request, T value)
{
return request.CreateResponse<T>(HttpStatusCode.OK, value, configuration: null);
}
As you see configuration property is just being set to null.
So you can just manually take configuration from Request object and call another overload like this:
`Request.CreateResponse(HttpStatusCode.OK, response, Request.GetConfiguration());`
If you are interested in more detail, you can check source code of the framework. CreateResponse is defined here
Problem
In our Web API 2 application, we configured the JSON formatting globally like this: ``` var jsonformatter = GlobalConfiguration.Configuration.Formatters.JsonFormatter; jsonformatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); ``` This worked great - JSON was camelcase.., until we changed our controller methods to return a HttpReponseMessage (instead of the response model type directly) like this: ``` Request.CreateResponse(HttpStatusCode.OK, response); ``` That one change seemed to cause MVC to not use the JSON formatter. Our JSON is no longer CaemlCase. Is this the expected/designed behavior or have I not specified the formatter correctly? Thanks, -Mike