# Error "A possible object cycle was detected" in Mercury / .NET Core API project

**URL:** https://talk.remobjects.com/t/error-a-possible-object-cycle-was-detected-in-mercury-net-core-api-project/25447
**Category:** Mercury
**Created:** [September 29, 2021, 9:43am UTC](https://talk.remobjects.com/t/error-a-possible-object-cycle-was-detected-in-mercury-net-core-api-project/25447 "2021-09-29T09:43:49Z")
**Posts on this page:** 10
**Page:** 1

<div class="post-metadata">

### Author: ![marcvanbreemen](https://talk.remobjects.com/user_avatar/talk.remobjects.com/marcvanbreemen/32/16420_2.png) [@marcvanbreemen](https://talk.remobjects.com/u/marcvanbreemen)
#### Post date: [September 29, 2021, 9:43am UTC](https://talk.remobjects.com/t/error-a-possible-object-cycle-was-detected-in-mercury-net-core-api-project/25447/1 "2021-09-29T09:43:49Z")

</div>

Scenario:  
Create a .NET Core API project using Mercury. When starting debug, I get the following error:

> System.Text.Json.JsonException
> 
> A possible object cycle was detected. This can either be due to a cycle or if the object depth is larger than the maximum allowed depth of 32. Consider using ReferenceHandler.Preserve on JsonSerializerOptions to support cycles.

The same project template with Oxygen works ok.

---

<div class="post-metadata">

### Author: ![mh](https://talk.remobjects.com/user_avatar/talk.remobjects.com/mh/32/18050_2.png) [@mh](https://talk.remobjects.com/u/mh)
#### Post date: [September 29, 2021, 12:56pm UTC](https://talk.remobjects.com/t/error-a-possible-object-cycle-was-detected-in-mercury-net-core-api-project/25447/2 "2021-09-29T12:56:12Z")

</div>

this is just with the project from template, no changes?

---

<div class="post-metadata">

### Author: ![marcvanbreemen](https://talk.remobjects.com/user_avatar/talk.remobjects.com/marcvanbreemen/32/16420_2.png) [@marcvanbreemen](https://talk.remobjects.com/u/marcvanbreemen)
#### Post date: [September 29, 2021, 1:00pm UTC](https://talk.remobjects.com/t/error-a-possible-object-cycle-was-detected-in-mercury-net-core-api-project/25447/3 "2021-09-29T13:00:10Z")

</div>

Yes, without any changes, other than setting a different port in Launchsettings.json.

---

<div class="post-metadata">

### Author: ![RemObjectsSoftware](https://talk.remobjects.com/user_avatar/talk.remobjects.com/remobjectssoftware/32/15947_2.png) [@RemObjectsSoftware](https://talk.remobjects.com/u/RemObjectsSoftware)
#### Post date: [September 29, 2021, 1:03pm UTC](https://talk.remobjects.com/t/error-a-possible-object-cycle-was-detected-in-mercury-net-core-api-project/25447/4 "2021-09-29T13:03:16Z")

</div>

Logged as [bugs://E25373](https://www.remobjects.com/portal/bugs/?id=E25373).

---

<div class="post-metadata">

### Author: ![mh](https://talk.remobjects.com/user_avatar/talk.remobjects.com/mh/32/18050_2.png) [@mh](https://talk.remobjects.com/u/mh)
#### Post date: [September 29, 2021, 3:22pm UTC](https://talk.remobjects.com/t/error-a-possible-object-cycle-was-detected-in-mercury-net-core-api-project/25447/5 "2021-09-29T15:22:31Z")

</div>

Do I need further steps to hit this error? the server ap launches fine for me and without exception:

 ![image](https://talk.remobjects.com/uploads/default/original/3X/e/a/eac9cd989efdd25bd357301dfed58a25bd9c4776.jpeg)

can I get a full screenshot for this, and/or maybe a call stack ? DO I understand correctly is this an runtime exception in the app, or is it an error reported by the debugger/IDE? If the latter, are you using Fire, Water or VS? Thanx!

---

<div class="post-metadata">

### Author: ![RemObjectsSoftware](https://talk.remobjects.com/user_avatar/talk.remobjects.com/remobjectssoftware/32/15947_2.png) [@RemObjectsSoftware](https://talk.remobjects.com/u/RemObjectsSoftware)
#### Post date: [September 29, 2021, 4:41pm UTC](https://talk.remobjects.com/t/error-a-possible-object-cycle-was-detected-in-mercury-net-core-api-project/25447/6 "2021-09-29T16:41:50Z")

</div>

[bugs://E25373](https://www.remobjects.com/portal/bugs/?id=E25373) was closed as fixed.

---

<div class="post-metadata">

### Author: ![marcvanbreemen](https://talk.remobjects.com/user_avatar/talk.remobjects.com/marcvanbreemen/32/16420_2.png) [@marcvanbreemen](https://talk.remobjects.com/u/marcvanbreemen)
#### Post date: [September 29, 2021, 4:42pm UTC](https://talk.remobjects.com/t/error-a-possible-object-cycle-was-detected-in-mercury-net-core-api-project/25447/7 "2021-09-29T16:42:09Z")

</div>

Weird. I just tried to reproduce it again and couldn’t. After doing some further testing I found out that it has something to do with the port issue again. On a certain port, that was used earlier and thus probably in use / blocked, this Json came up. Once I changed the port to something new (not in use), the error was gone …

An exception occurred in WebApplication6, thread 0186

Type: System.Text.Json.JsonException

Message:

A possible object cycle was detected. This can either be due to a cycle or if the object depth is larger than the maximum allowed depth of 32. Consider using ReferenceHandler.Preserve on JsonSerializerOptions to support cycles.

Call Stack:

0000000000000000 System.Text.Json.ThrowHelper.ThrowJsonException\_SerializerCycleDetected  
0000000000000000 System.Text.Json.Serialization.JsonConverter`1.TryWrite 0000000000000000 System.Text.Json.JsonPropertyInfo`1.GetMemberAndWriteJson  
0000000000000000 System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite 0000000000000000 System.Text.Json.Serialization.JsonConverter`1.TryWrite  
0000000000000000 System.Text.Json.JsonPropertyInfo`1.GetMemberAndWriteJson 0000000000000000 System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite  
0000000000000000 System.Text.Json.Serialization.JsonConverter`1.TryWrite 0000000000000000 System.Text.Json.JsonPropertyInfo`1.GetMemberAndWriteJson  
0000000000000000 System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite 0000000000000000 System.Text.Json.Serialization.JsonConverter`1.TryWrite  
0000000000000000 System.Text.Json.JsonPropertyInfo`1.GetMemberAndWriteJson 0000000000000000 System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite  
0000000000000000 System.Text.Json.Serialization.JsonConverter`1.TryWrite 0000000000000000 System.Text.Json.JsonPropertyInfo`1.GetMemberAndWriteJson  
0000000000000000 System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite 0000000000000000 System.Text.Json.Serialization.JsonConverter`1.TryWrite  
0000000000000000 System.Text.Json.JsonPropertyInfo`1.GetMemberAndWriteJson 0000000000000000 System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite  
0000000000000000 System.Text.Json.Serialization.JsonConverter`1.TryWrite 0000000000000000 System.Text.Json.JsonPropertyInfo`1.GetMemberAndWriteJson  
0000000000000000 System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite 0000000000000000 System.Text.Json.Serialization.JsonConverter`1.TryWrite  
0000000000000000 System.Text.Json.JsonPropertyInfo`1.GetMemberAndWriteJson 0000000000000000 System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite  
0000000000000000 System.Text.Json.Serialization.JsonConverter`1.TryWrite 0000000000000000 System.Text.Json.JsonPropertyInfo`1.GetMemberAndWriteJson  
0000000000000000 System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite 0000000000000000 System.Text.Json.Serialization.JsonConverter`1.TryWrite  
0000000000000000 System.Text.Json.JsonPropertyInfo`1.GetMemberAndWriteJson 0000000000000000 System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite  
0000000000000000 System.Text.Json.Serialization.JsonConverter`1.TryWrite 0000000000000000 System.Text.Json.JsonPropertyInfo`1.GetMemberAndWriteJson  
0000000000000000 System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite 0000000000000000 System.Text.Json.Serialization.JsonConverter`1.TryWrite  
0000000000000000 System.Text.Json.JsonPropertyInfo`1.GetMemberAndWriteJson 0000000000000000 System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite  
0000000000000000 System.Text.Json.Serialization.JsonConverter`1.TryWrite 0000000000000000 System.Text.Json.JsonPropertyInfo`1.GetMemberAndWriteJson  
0000000000000000 System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite 0000000000000000 System.Text.Json.Serialization.JsonConverter`1.TryWrite  
0000000000000000 System.Text.Json.JsonPropertyInfo`1.GetMemberAndWriteJson 0000000000000000 System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite  
0000000000000000 System.Text.Json.Serialization.JsonConverter`1.TryWrite 0000000000000000 System.Text.Json.JsonPropertyInfo`1.GetMemberAndWriteJson  
0000000000000000 System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite 0000000000000000 System.Text.Json.Serialization.JsonConverter`1.TryWrite  
0000000000000000 System.Text.Json.JsonPropertyInfo`1.GetMemberAndWriteJson 0000000000000000 System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite  
0000000000000000 System.Text.Json.Serialization.JsonConverter`1.TryWrite 0000000000000000 System.Text.Json.JsonPropertyInfo`1.GetMemberAndWriteJson  
0000000000000000 System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite 0000000000000000 System.Text.Json.Serialization.JsonConverter`1.TryWrite  
0000000000000000 System.Text.Json.JsonPropertyInfo`1.GetMemberAndWriteJson 0000000000000000 System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite  
0000000000000000 System.Text.Json.Serialization.JsonConverter`1.TryWrite 0000000000000000 System.Text.Json.JsonPropertyInfo`1.GetMemberAndWriteJson  
0000000000000000 System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite 0000000000000000 System.Text.Json.Serialization.JsonConverter`1.TryWrite  
0000000000000000 System.Text.Json.JsonPropertyInfo`1.GetMemberAndWriteJson 0000000000000000 System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite  
0000000000000000 System.Text.Json.Serialization.JsonConverter`1.TryWrite 0000000000000000 System.Text.Json.JsonPropertyInfo`1.GetMemberAndWriteJson  
0000000000000000 System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite 0000000000000000 System.Text.Json.Serialization.JsonConverter`1.TryWrite  
0000000000000000 System.Text.Json.JsonPropertyInfo`1.GetMemberAndWriteJson 0000000000000000 System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite  
0000000000000000 System.Text.Json.Serialization.JsonConverter`1.TryWrite 0000000000000000 System.Text.Json.JsonPropertyInfo`1.GetMemberAndWriteJson  
0000000000000000 System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite 0000000000000000 System.Text.Json.Serialization.JsonConverter`1.TryWrite  
0000000000000000 System.Text.Json.JsonPropertyInfo`1.GetMemberAndWriteJson 0000000000000000 System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite  
0000000000000000 System.Text.Json.Serialization.JsonConverter`1.TryWrite 0000000000000000 System.Text.Json.JsonPropertyInfo`1.GetMemberAndWriteJson  
0000000000000000 System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite 0000000000000000 System.Text.Json.Serialization.JsonConverter`1.TryWrite  
0000000000000000 System.Text.Json.JsonPropertyInfo`1.GetMemberAndWriteJson 0000000000000000 System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite  
0000000000000000 System.Text.Json.Serialization.JsonConverter`1.TryWrite 0000000000000000 System.Text.Json.JsonPropertyInfo`1.GetMemberAndWriteJson  
0000000000000000 System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite 0000000000000000 System.Text.Json.Serialization.JsonConverter`1.TryWrite  
0000000000000000 System.Text.Json.JsonPropertyInfo`1.GetMemberAndWriteJson 0000000000000000 System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite  
0000000000000000 System.Text.Json.Serialization.JsonConverter`1.TryWrite 0000000000000000 System.Text.Json.JsonPropertyInfo`1.GetMemberAndWriteJson  
0000000000000000 System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite 0000000000000000 System.Text.Json.Serialization.JsonConverter`1.TryWrite  
0000000000000000 System.Text.Json.JsonPropertyInfo`1.GetMemberAndWriteJson 0000000000000000 System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite  
0000000000000000 System.Text.Json.Serialization.JsonConverter`1.TryWrite 0000000000000000 System.Text.Json.JsonPropertyInfo`1.GetMemberAndWriteJson  
0000000000000000 System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite 0000000000000000 System.Text.Json.Serialization.JsonConverter`1.TryWrite  
0000000000000000 System.Text.Json.Serialization.Converters.ArrayConverter`2.OnWriteResume 0000000000000000 System.Text.Json.Serialization.Converters.IEnumerableDefaultConverter`2.OnTryWrite  
0000000000000000 System.Text.Json.Serialization.JsonConverter`1.TryWrite 0000000000000000 System.Text.Json.Serialization.JsonConverter`1.WriteCore  
0000000000000000 System.Text.Json.Serialization.JsonConverter`1.WriteCoreAsObject  
0000000000000000 System.Text.Json.JsonSerializer.WriteCore

---

<div class="post-metadata">

### Author: ![marcvanbreemen](https://talk.remobjects.com/user_avatar/talk.remobjects.com/marcvanbreemen/32/16420_2.png) [@marcvanbreemen](https://talk.remobjects.com/u/marcvanbreemen)
#### Post date: [September 29, 2021, 4:44pm UTC](https://talk.remobjects.com/t/error-a-possible-object-cycle-was-detected-in-mercury-net-core-api-project/25447/8 "2021-09-29T16:44:08Z")

</div>

This is the Diagnostic log. The error occurs after I let Kestrel output the Json. In other words, if I start debugging, the error doesn’t show up immediately, if it starts with the base URL (localhost:). If I add “/weatherforecast” and thus let the Controller create the Json output, the error comes up.

~\> Process WebApplication6 started, took 0.723.  
~\> Attaching to 17473  
~\> Microsoft.Hosting.Lifetime: Information: Now listening on: [http://localhost:5056](http://localhost:5056)  
﻿e[40me[32minfoe[39me[22me[49m: Microsoft.Hosting.Lifetime[0]  
Now listening on: [http://localhost:5056](http://localhost:5056)  
~\> Microsoft.Hosting.Lifetime: Information: Application started. Press Ctrl+C to shut down.  
e[40me[32minfoe[39me[22me[49m: Microsoft.Hosting.Lifetime[0]  
Application started. Press Ctrl+C to shut down.  
e[40me[32minfoe[39me[22me[49m: Microsoft.Hosting.Lifetime[0]  
Hosting environment: Development  
~\> Microsoft.Hosting.Lifetime: Information: Hosting environment: Development  
~\> Microsoft.Hosting.Lifetime: Information: Content root path: /Users/marcvanbreemen/Lokaal/WebApplication6  
e[40me[32minfoe[39me[22me[49m: Microsoft.Hosting.Lifetime[0]  
Content root path: /Users/marcvanbreemen/Lokaal/WebApplication6  
e[40me[32minfoe[39me[22me[49m: Microsoft.AspNetCore.Hosting.Diagnostics[1]  
Request starting HTTP/1.1 GET [http://localhost:5056/weatherforecast](http://localhost:5056/weatherforecast) - -  
~\> Microsoft.AspNetCore.Hosting.Diagnostics: Information: Request starting HTTP/1.1 GET [http://localhost:5056/weatherforecast](http://localhost:5056/weatherforecast) - -  
e[40me[1me[33mwarne[39me[22me[49m: Microsoft.AspNetCore.HttpsPolicy.HttpsRedirectionMiddleware[3]  
Failed to determine the https port for redirect.  
~\> Microsoft.AspNetCore.HttpsPolicy.HttpsRedirectionMiddleware: Warning: Failed to determine the https port for redirect.  
e[40me[32minfoe[39me[22me[49m: Microsoft.AspNetCore.Routing.EndpointMiddleware[0]  
Executing endpoint ‘WebApplication6.Controllers.WeatherForecastController.Get (WebApplication6)’  
~\> Microsoft.AspNetCore.Routing.EndpointMiddleware: Information: Executing endpoint ‘WebApplication6.Controllers.WeatherForecastController.Get (WebApplication6)’  
e[40me[32minfoe[39me[22me[49m: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[3]  
Route matched with {action = “Get”, controller = “WeatherForecast”}. Executing controller action with signature System.Collections.Generic.IEnumerable`1[WebApplication6.WeatherForecast] Get() on controller WebApplication6.Controllers.WeatherForecastController (WebApplication6). ~> Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker: Information: Route matched with {action = "Get", controller = "WeatherForecast"}. Executing controller action with signature System.Collections.Generic.IEnumerable`1[WebApplication6.WeatherForecast] Get() on controller WebApplication6.Controllers.WeatherForecastController (WebApplication6).  
e[40me[32minfoe[39me[22me[49m: Microsoft.AspNetCore.Mvc.Infrastructure.ObjectResultExecutor[1]  
Executing ObjectResult, writing value of type ‘WebApplication6.WeatherForecast[]’.  
~\> Microsoft.AspNetCore.Mvc.Infrastructure.ObjectResultExecutor: Information: Executing ObjectResult, writing value of type ‘WebApplication6.WeatherForecast[]’.  
!\> Exception of type System.Text.Json.JsonException on thread 0186  
!\> Message: A possible object cycle was detected. This can either be due to a cycle or if the object depth is larger than the maximum allowed depth of 32. Consider using ReferenceHandler.Preserve on JsonSerializerOptions to support cycles.

#\> (edb)

---

<div class="post-metadata">

### Author: ![marcvanbreemen](https://talk.remobjects.com/user_avatar/talk.remobjects.com/marcvanbreemen/32/16420_2.png) [@marcvanbreemen](https://talk.remobjects.com/u/marcvanbreemen)
#### Post date: [September 29, 2021, 4:44pm UTC](https://talk.remobjects.com/t/error-a-possible-object-cycle-was-detected-in-mercury-net-core-api-project/25447/9 "2021-09-29T16:44:42Z")

</div>

I’m using Fire on macOS Monterey.

---

<div class="post-metadata">

### Author: ![Diego\_Navarro](https://talk.remobjects.com/user_avatar/talk.remobjects.com/diego_navarro/32/11766_2.png) [@Diego\_Navarro](https://talk.remobjects.com/u/Diego_Navarro)
#### Post date: [September 29, 2021, 5:10pm UTC](https://talk.remobjects.com/t/error-a-possible-object-cycle-was-detected-in-mercury-net-core-api-project/25447/10 "2021-09-29T17:10:36Z")

</div>

Hi, please, in WeatherForecast.vb file, add:  
Imports System

on top of the file, should be:

```auto
Imports System

Public Class WeatherForecast

  Public Property [Date] As DateTime

  Public Property TemperatureC As Integer

  Public Property TemperatureF As Integer
    Get
      return 32 + Integer(TemperatureC / 0.5556)
    End Get
  End Property

  Public Property Summary As String

End Class

```

this fixes the issue.
