Kami menerapkan .NET Core 3.1 API dan kami menggunakan Microsoft.AspNetCore.Mvc.NewtonsoftJson menurut dokumen ini. Kita berurusan dengan enum dan kita memerlukan representasi string, bukan bilangan bulat. Kami melakukannya menggunakan atribut JSONConverter seperti ini:
[JsonProperty("region")]
[JsonConverter(typeof(StringEnumConverter))]
public Region Region { get; set; }
Kami mencoba melakukannya secara global dari Startup.cs seperti di bawah ini:
services.AddControllers().AddNewtonsoftJson(opts => opts.SerializerSettings.Converters.Add(new StringEnumConverter()));
Jika kami melakukan itu, Cosmos DB akan mengeluh
PartitionKey yang diekstraksi dari dokumen tidak cocok dengan yang ditentukan di header
Jadi kami mencoba menghapus semua atribut kecuali atribut wilayah. Semua enum lain yang tidak memiliki atribut disimpan sebagai string dengan benar, namun wilayah tersebut masih memerlukan atribut agar berfungsi. Adakah petunjuk mengapa ini terjadi dan bagaimana cara mengatasinya?
AddNewtonsoftJson()
hanya memengaruhi perilaku default serialisasi JSON inti asp.net dan pengikatan model, tidak memengaruhi perilaku Json.NET standalone atau aplikasi lain. Untuk melakukannya lihat Menetapkan pengaturan json serializer global default. - person dbc   schedule 29.06.2020JsonSerializer.Create()
alih-alihJsonSerializer.CreateDefault()
global defaultnya diabaikan.) Bisakah Anda edit pertanyaan Anda untuk membagikan contoh minimal yang dapat direproduksi yang menunjukkan cara menghasilkan kesalahan Cosmos DB? - person dbc   schedule 29.06.2020