【问题标题】:Put Method To Update A 'Hotel' Object Ends With System.Text.Json.JsonException更新“酒店”对象的 Put 方法以 System.Text.Json.JsonException 结尾
【发布时间】:2020-11-30 19:51:55
【问题描述】:

据我观察,Put 请求处理得非常好,但是在将更新的酒店对象从 HotelRepository 传递到 HotelManager 层后出现问题。

这就是错误:System.Text.Json.JsonException: 检测到可能的对象循环不受支持。这可能是由于循环或对象深度大于最大允许深度 32 造成的。

这是 HotelRepository 中的代码:

public async Task<int> UpdateHotel(Hotel hotel)
    {
        var sql = "UPDATE Hotels " +
                    "SET name = @name, city = @city " +
                    "WHERE Id = @id";

        var updatedHotel = new Hotel()
        {
            Name = hotel.Name,
            City = hotel.City,
            Id = hotel.Id
        };

        using (var connection = new SqlConnection(CONNECTION_STRING))
        {
            return await connection.ExecuteAsync(sql, updatedHotel);
        }
    }

起初我以为是关于 sql 命令中的空格。我意识到我没有在行尾后添加任何空格,所以我修复了这个问题,但我想这不是问题,因为我仍然遇到同样的错误。

其他路线运行良好。

请求中的Hotel 对象包含id、name 和city。 你知道怎么回事吗?

【问题讨论】:

    标签: asp.net asp.net-core asp.net-web-api dapper


    【解决方案1】:

    这就是错误:System.Text.Json.JsonException: 检测到可能的对象循环不受支持。这可能是由于循环或对象深度大于最大允许深度 32 造成的。

    您可以尝试安装Microsoft.AspNetCore.Mvc.NewtonsoftJson NuGet 包以添加对基于Newtonsoft.Json 的功能的支持,并检查它是否有助于解决上述问题。

    services.AddControllersWithViews().AddNewtonsoftJson(options =>
    {
        options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
    });
    

    【讨论】:

      猜你喜欢
      • 2022-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-01
      • 2013-11-16
      • 2011-02-15
      • 2013-06-12
      相关资源
      最近更新 更多