在我们的Web API 2应用程序中,我们像这样全局配置JSON格式:
var jsonformatter = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
jsonformatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
这很好用 - JSON是camelcase ..,直到我们改变我们的控制器方法以返回HttpReponseMessage(而不是直接响应模型类型),如下所示:
Request.CreateResponse(HttpStatusCode.OK, response);
这一个更改似乎导致MVC不使用JSON格式化程序。我们的JSON不再是CaemlCase。
这是预期/设计的行为还是我没有正确指定格式化程序?
谢谢, -Mike
答案 0 :(得分:6)
使用Request.CreateResponse时调用的实际方法是:
public static HttpResponseMessage CreateResponse<T>(
this HttpRequestMessage request, T value)
{
return request.CreateResponse<T>(HttpStatusCode.OK, value, configuration: null);
}
如您所见,配置属性只是设置为null。
因此,您只需从Request对象手动获取配置并调用另一个重载,如下所示:
Request.CreateResponse(HttpStatusCode.OK, response, Request.GetConfiguration());
如果您对更多细节感兴趣,可以查看框架的源代码。 CreateResponse定义为here