Проблема в преобразовании типов. Вы отправляете массив с одним значением, содержащим словарь, и пытаетесь получить строку в методе. ASP. NET не может преобразовать вашу структуру в string
и использовать null в качестве значения по умолчанию.
Итак, простой способ проверить метод - передать простую строку в теле. Но правильный способ - изменить тип объекта, переходящего в метод действия:
public HttpResponseMessage Post(int id, [FromBody]List<Dictionary<string,string>> value)
{
//DO Something
}
Странно разбирать JSON вручную, когда это делает система, но тогда вы должны передать string
методу . Просто заверните свое тело в ""
, и вы получите простой JSON в методе. Также вы можете прочитать тело вручную через StreamReader
:
public HttpResponseMessage Post(int id)
{
using (StreamReader reader = new StreamReader(Request.Body, Encoding.UTF8))
{
var plainBody = reader.ReadToEnd();
}
}