2016-12-22 4 views
5

У меня есть метод POST в контроллере Web API, который принимает класс с 50 полями в качестве параметра. Я получаю значение параметра как null в контроллере, но если я уменьшу количество полей до 30 или около того, я получаю правильное значение.Параметр Web API POST имеет значение null для большого запроса JSON

я это добавил к Web.Config:

добавить ключ = "САШ: MaxJsonDeserializerMembers" значение = "140000"

Если я использую Request.Content.ReadAsStreamAsync() и использовать JsonSerializer десериализовать поток, я получаю объект с правильными значениями.

Это предпочтительный способ чтения параметра POST?

+0

Вы уменьшили его до 30, и он работает? Теперь возьмите эти 30 и разместите их с другими 20 и посмотрите, что произойдет. Я думаю, что проблема может быть с 1 из этих 20 – CodingYoshi

+0

Но эти 20 являются базовыми десятичными полями. Но я еще не присваивал им никаких значений. Не знаете, как это влияет на сериализацию? – user636525

ответ

-3

создайте свойства для всех ваших параметров и перейдите к методу post как объект класса. ex.

public class clsProperty{ 
public param1 {get;set;} 
public param2 {get;set;} 
} 

[HttpPost] общественного недействительными postmethod ([frombody] clsProperty)

6

установить значение httpRuntime в web.config

<httpRuntime maxRequestLength="50000"></httpRuntime> 

Максимальный размер запроса в килобайт. Размер по умолчанию - 4096 КБ (4 МБ).