Asp.NET Core 3.0 Web API Mimarisinde “A Possible Object Cycle Was Detected Which Is Not Supported” Hatası ve Çözümü
Merhaba,
Asp.NET Core Web API 3.0 mimarisinde endpointlere yapılan istekler neticesinde JSON formatına parse edilip gönderilen veriler eğer ki birbiriyle ilişkisel verilerden ibaretse(ki genellikle bu şekilde ilişkisel veriler Entity Framework Core – Lazy Loading mekanizması ile elde edilir) bu parse işlemi gerçekleştirilemeyecek ve makalemizin başlığınıda oluşturan aşağıdaki hatayı verecektir.
Hatayı metinsel olarak da aşağıda ele alalım…
System.Text.Json.JsonException: A possible object cycle was detected which is not supported. This can either be due to a cycle or if the object depth is larger than the maximum allowed depth of 32.
Bu hata ilişkisel verilerin serialize edilmesinde döngüsel durumun gerçekleştirilememesinden kaynaklanmaktadır. Dolayısıyla bu duruma çözüm olarak .NET Core 3.0’da json politikaları değiştirildi ve serialize becerisi oldukça güçlendirildi. Hatayı çözebilmek için Microsoft.AspNetCore.Mvc.NewtonsoftJson kütüphanesini uygulamanıza eklemeniz ve ardından Startup dosyasında aşağıdaki operasyonu gerçekleştirmeniz gerekmektedir.
Yukarıdaki ekran görüntüsünde de görebildiğiniz gibi “AddControllers()” metodunun devamına “AddNewtonsftJson(..)” metodu eklenmekte ve içerisine parametre olarak json operasyonlarına özel gerekli konfigürasyonel işlemleri yaptığımız lambda ifadesi oluşturulmakta ve ilişkisel nesnelerdeki döngüsel durumların işlenmesi görmezden gelinmektedir.
Ve bu şekilde hata ortadan kaldırılmış bulunmaktadır…
İlgilenenlerin ve şifa arayınların faydalanması dileğiyle… 🙂
Sonraki yazılarımda görüşmek üzere…
İyi çalışmalar…
Thanks! You saved my time. 🙂
Thank you, that made me happy. 🙂
Başlık hatalı olmuş, bu bir çözüm değil ki? Sen sadece System.Text.Json yerine eski NewtonsoftJson’u kullan demişsin kısaca. Ama bir “workaround” olarak kabul edilebilir.
Teşekkürler 🙂
mukemmelsin dostumm
sen adamsın