เรากำลังใช้ .NET Core 3.1 API และเรากำลังใช้ Microsoft.AspNetCore.Mvc.NewtonsoftJson ตาม เอกสารนี้ เรากำลังจัดการกับ enum และเราต้องการการแสดงสตริงแทนจำนวนเต็ม เรากำลังดำเนินการโดยใช้แอตทริบิวต์ 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 ที่ดึงมาจากเอกสารไม่ตรงกับที่ระบุไว้ในส่วนหัว
ดังนั้นเราจึงพยายามลบคุณลักษณะทั้งหมดยกเว้นภูมิภาคหนึ่ง enum อื่นๆ ทั้งหมดที่ไม่มีแอตทริบิวต์จะถูกจัดเก็บเป็นสตริงอย่างถูกต้อง แต่ขอบเขตยังคงต้องการให้แอตทริบิวต์ทำงาน มีเบาะแสใด ๆ ว่าทำไมสิ่งนี้ถึงเกิดขึ้นและจะแก้ไขได้อย่างไร?
AddNewtonsoftJson()
ส่งผลต่อพฤติกรรมเริ่มต้นของการจัดอนุกรม JSON ของ asp.net core และการเชื่อมโยงโมเดลเท่านั้น โดยจะไม่ส่งผลต่อพฤติกรรมของ Json.NET สแตนด์อโลน หรือแอปอื่นๆ หากต้องการดำเนินการดังกล่าว โปรดดูตั้งค่าเริ่มต้นของการตั้งค่า json serializer ส่วนกลาง - person dbc   schedule 29.06.2020JsonSerializer.Create()
แทนที่จะเป็นJsonSerializer.CreateDefault()
global ค่าเริ่มต้นจะถูกละเว้น) โปรดแก้ไขคำถามของคุณเพื่อแบ่งปัน ตัวอย่างที่ทำซ้ำได้น้อยที่สุด แสดงวิธีสร้างข้อผิดพลาด Cosmos DB - person dbc   schedule 29.06.2020