Как я могу увеличить предел MaxDepth десериализации JSON в моем веб-приложении ASP.NET Core? - PullRequest
0 голосов
/ 27 сентября 2019

Мы используем ASP.NET Core 2.1 с .NET Framework 4.6.2.

У нас есть заказчик, которому необходимо отправить в наше веб-приложение довольно многоуровневую структуру json.

Когда они делают этот вызов, мы выводим следующий журнал и возвращаем ошибку:

Превышен MaxDepth 32 читателя.Путь ' super.long.path.to свойство ', строка 1, позиция 42111. "

Я просмотрел кодовую базу ASP.NET Core и заметилпара ссылок на MaxDepth = 32 в десериализаторе, поставляемом с каркасом.

Возможно ли настроить это на другую глубину?

Ответы [ 2 ]

0 голосов
/ 30 сентября 2019

Вы также можете установить необходимую глубину непосредственно при десериализации, как показано в следующем примере:

JsonConvert.DeserializeObject< T >(json, new JsonSerializerSettings
{
    MaxDepth = //the value you need
});
0 голосов
/ 27 сентября 2019

Я не проверял это, но в Startup.cs вы можете сделать что-то вроде этого:

services.AddMvc().AddJsonOptions(options => {
    options.SerializerSettings.MaxDepth = 64;  // or however deep you need
});
...