Jil序列化器作为MVC的默认值,不接受" json"内容类型

时间:2016-01-13 11:48:35

标签: asp.net json asp.net-mvc jil

是否有人知道Jil是否可以在API的http调用中接受ContentType: 'application/json'

从我看来,它只能接受ContentType:x-www-formencoded

一个不适合我的例子,控制器中收到的对象为空。 这是JS调用

 var request = $.ajax({
        url: uri,
        type: commad,
        data: JSON.stringify(obj),
        dataType: "json",
        contentType: 'application/json',

这是obj内容:

{"SessionToken":"65e2be91-a455-0ef3-0ba0-c2dd2c281ecc","ClientType":1,"OfferType":1,"DeviceInfo":{"Width":1080,"Height":1920}}

现在,在MVC控制器中,这是方法:

[HttpPost]
public Task<ActionResult> GetUserOffers([FromBody]OffersRequestInfo obj)
{
    if (obj == null)
        return null;

    CampaignLogic logic = new CampaignLogic();
    Task<ActionResult> res = logic.GetOffers(obj);
    return res;
}

使用Jil时收到的obj参数为null,而Newtonsoft则保留了请求中的值。

1 个答案:

答案 0 :(得分:1)

下一行应该添加到JilFormatter

的约束器中
  SupportedMediaTypes.Add(new MediaTypeHeaderValue("application/json"));

有关如何将Jil实现为默认mvc序列化程序的更多说明: Here