Jil сериализатор по умолчанию MVC, не принимайте "json" ContentType

Кто-нибудь знает, может ли Джил принять ContentType: 'application/json' в http вызове API?

Из того, что я вижу, это может только принять 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;
}

параметр obj, получаемый как ноль при использовании Jil, с Newtonsoft он содержит значение из запроса.

1 ответ

Решение

Следующая строка должна быть добавлена ​​в конструктор JilFormatter

  SupportedMediaTypes.Add(new MediaTypeHeaderValue("application/json"));

Подробнее о том, как реализовать Jil в качестве сериализатора mvc по умолчанию: здесь

Другие вопросы по тегам