NullValueHandling между Owin (4.0.1) и последней версией Core с использованием NewtonSoft - PullRequest
0 голосов
/ 28 мая 2020

Перенос Net (4.6.1) на Core и обнаружил разницу между обработкой нулевого значения, которую я не могу объяснить.

API Net работает с Owin 4.0.1 с следующая установка JSON на HttpConfiguration:

 configuration.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
 configuration.Formatters.JsonFormatter.UseDataContractJsonSerializer = false;

Нигде в сериализуемом контроллере или классе явно игнорируются нулевые значения. Независимо от того, может ли сериализация JSON с нулевыми свойствами проходить через контроллер.

Однако после преобразования в Core с помощью NewtonSoft с аналогичной конфигурацией:

services
  .AddControllers()
  .AddNewtonsoftJson(options => {
     options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
  })
  .AddXmlSerializerFormatters()
  .AddControllersAsServices();

то же действие контроллера не выполняется. преобразовать null в int. Нулевые значения можно игнорировать, добавив:

options.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;

Однако я хотел бы узнать, действует ли поведение по умолчанию с Owin | Net должен был неявно игнорировать нулевые значения. Может найти в коде все, что указывает на явное или неявное игнорирование нулевых значений.

...