Мы внедряем API .NET Core 3.1 и используем Microsoft.AspNetCore.Mvc.NewtonsoftJson в соответствии с этот документ. Мы имеем дело с перечислениями, и нам нужно строковое представление вместо целых чисел. Мы делаем это, используя атрибут JsonConverter следующим образом:
[JsonProperty("region")]
[JsonConverter(typeof(StringEnumConverter))]
public Region Region { get; set; }
Мы пытаемся сделать это глобально из Startup.cs, как показано ниже:
services.AddControllers().AddNewtonsoftJson(opts => opts.SerializerSettings.Converters.Add(new StringEnumConverter()));
Если мы это сделаем, Cosmos DB жалуется на
PartitionKey, извлеченный из документа, не соответствует указанному в заголовке
Поэтому мы попытались удалить все атрибуты, кроме атрибута региона. Все остальные перечисления, у которых нет атрибута, правильно сохраняются в виде строк, но для работы региона по-прежнему требуется атрибут. Любая подсказка, почему это происходит и как это решить?
AddNewtonsoftJson()
влияет только на поведение по умолчанию сериализации JSON ядра asp.net и привязки модели, но не влияет на поведение автономного Json.NET или других приложений. Чтобы сделать это, см. раздел Установка глобальных настроек сериализатора json по умолчанию. - person dbc   schedule 29.06.2020JsonSerializer.Create()
вместоJsonSerializer.CreateDefault()
глобального значения по умолчанию игнорируются.) Не могли бы вы отредактировать свой вопрос, чтобы поделиться минимальный воспроизводимый пример, показывающий, как сгенерировать ошибку Cosmos DB? - person dbc   schedule 29.06.2020