Apabila Mensiri Senarai Objek, JSON.Net boleh menghadapi pengecualian "Gelung Rujukan Kendiri Dikesan". Ralat ini berlaku apabila terdapat rujukan bulat dalam graf objek bersiri.
Masalah Khusus
Coretan kod yang disediakan:
public ActionResult getRouteFromPart(int partId) { List<Route> routes = _routeService.GetRouteByPartType(partId); ... return this.AdvancedJsonResult(new { Routes = routes }, JsonRequestBehavior.AllowGet); }
melemparkan pengecualian semasa cuba menyusun senarai Laluan objek.
Penyelesaian
Pengecualian menunjukkan bahawa terdapat rujukan bulat dalam graf objek Laluan. Secara khusus, mesej ralat menyebut laluan 'routes[0].incomingLots[0].partNumber.partType.partNumbers'. Ini menunjukkan bahawa terdapat hubungan antara objek Laluan dan objek PartNumber, dan rujukan itu menyebabkan gelung.
Untuk menyelesaikan isu ini, anda boleh melumpuhkan gelung rujukan sendiri semasa bersiri dengan mengkonfigurasi penyeri JSON.Net tetapan seperti berikut:
var settings = new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore };
Tetapan ini mengarahkan JSON.Net untuk mengabaikan rujukan bulat dan meneruskan siri proses.
Mesej Pengecualian Penuh
Self referencing loop detected with type 'System.Data.Entity.DynamicProxies.PartNumber_B135A5D16403B760C3591872ED4C98A25643FD10B51246A690C2F2D977973452'. Path 'routes[0].incomingLots[0].partNumber.partType.partNumbers'.
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Pengecualian 'Gelung Rujukan Kendiri Dikesan' Apabila Mensiri Senarai Objek dengan JSON.Net?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!