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.
Asp.NET Core 3.0 Web API Mimarisinde A Possible Object Cycle Was Detected Which Is Not Supported Hatası ve Çözümü

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.
Asp.NET Core 3.0 Web API Mimarisinde A Possible Object Cycle Was Detected Which Is Not Supported Hatası ve Çözümü

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…

Bunlar da hoşunuza gidebilir...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

*