スポンサーリンク
スポンサーリンク

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 64. Consider using ReferenceHandler.Preserve on JsonSerializerOptions to support cycles

.NET CoreASP.NET CoreBlazor ServerC#SPA

Exception

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 64. Consider using ReferenceHandler.Preserve on JsonSerializerOptions to support cycles.
可能性のあるオブジェクトサイクルが検出されました。 これは、サイクルが原因であるか、オブジェクトの深さが最大許容深さ64よりも大きい場合に発生する可能性があります。サイクルをサポートするには、JsonSerializerOptionsでReferenceHandler.Preserveを使用することを検討してください。

 

Jsonシリアライズ

上記のExceptionは、JsonSerializer.Serialize() のパラメータに ReferenceHandler.Preserve を設定した JsonSerializerOptions を渡すことで解消します。

 

セッション変数

Asp.Net Core のセッション変数は、全てのデータをjson形式に変換して格納するので、複雑なModelクラスをセッション変数に格納しようとした場合も、上記のExceptionが発生することがある。
その場合は、ReferenceHandler.Preserve を指定した JsonSerializer.Serialize() で、Jsonシリアライズ/デシリアライズを介することで、複雑なModelクラスもセッション変数で扱えるようになります。
※Customer は複雑なModelクラスの定義例で、customer は Customer クラスのインスタンスです。

※このExceptionは、Startup.cs の ConfigureServices(IServiceCollection services) メソッドに下記を追加しても解消ません。

 

コメント

タイトルとURLをコピーしました