加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-web-api – MVC5 – WebAPI 2 – 当Controller更改为返

发布时间:2020-12-16 07:06:11 所属栏目:asp.Net 来源:网络整理
导读:在我们的Web API 2应用程序中,我们像这样全局配置 JSON格式: var jsonformatter = GlobalConfiguration.Configuration.Formatters.JsonFormatter; jsonformatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); 这
在我们的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.

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

谢谢,
-麦克风

解决方法

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读