gpt4 book ai didi

asp.net-web-api - MVC5 - WebAPI 2 - 当 Controller 更改为返回 HttpResponseMessage 时,CamelCase JSON 格式化程序停止工作

转载 作者:行者123 更新时间:2023-12-04 18:42:07 25 4
gpt4 key购买 nike

在我们的 Web API 2 应用程序中,我们像这样全局配置了 JSON 格式:

var jsonformatter = GlobalConfiguration.Configuration.Formatters.JsonFormatter;      
jsonformatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();

这很有效 - JSON 是驼峰式的..,直到我们更改 Controller 方法以返回 HttpReponseMessage(而不是直接响应模型类型),如下所示:
Request.CreateResponse(HttpStatusCode.OK, response);

这一变化似乎导致 MVC 不使用 JSON 格式化程序。我们的 JSON 不再是 CaemlCase。

这是预期/设计的行为还是我没有正确指定格式化程序?

谢谢,
-麦克风

最佳答案

使用 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

关于asp.net-web-api - MVC5 - WebAPI 2 - 当 Controller 更改为返回 HttpResponseMessage 时,CamelCase JSON 格式化程序停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23704434/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com