Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将嵌套对象从Blazor API返回到WASM_C#_Api_Blazor - Fatal编程技术网

C# 将嵌套对象从Blazor API返回到WASM

C# 将嵌套对象从Blazor API返回到WASM,c#,api,blazor,C#,Api,Blazor,我正在学习Blazor,并用一个简单的图像查看器创建一个网站 我有以下类描述图像和任何相关标记: public class GalleryImage { public int ID { get; set; } public string FileName { get; set; } public virtual ICollection<GalleryImageTag> ImageTags { get; set; } } public class Galler

我正在学习Blazor,并用一个简单的图像查看器创建一个网站

我有以下类描述图像和任何相关标记:

public class GalleryImage
{
    public int ID { get; set; }
    public string FileName { get; set; }
    public virtual ICollection<GalleryImageTag> ImageTags { get; set; }
}

public class GalleryImageTag
{
    public int ID { get; set; }
    public string Tag { get; set; }
    public virtual ICollection<GalleryImage> GalleryImages { get; set; }
}
然后它失败了。如果我在返回时中断,那么galleryImages正确地包含galleryImages列表,并且任何已标记的都包括GalleryImageTags列表。但我在Chrome控制台中发现一个错误:

Gallery.OnInitializedAsync中出错:响应状态代码不表示成功:500(内部服务器错误)

我做错了什么


客户端和服务器都在使用.Net 5.0。

您有一个循环引用。这将从数据库返回,但会导致序列化错误。您可以在其中一个集合上放置
[JsonIgnore]
属性,以防止循环序列化。

这里的问题肯定是存在循环引用,其中图像和标记相互引用。你应该考虑发送一个引用只有一个方法的对象。<代码> [jsNeReun] < /Cord>在其中一个集合中停止循环序列化,谢谢,排序了。布莱恩·帕克如果你再加上这个答案,我就相信你了。
[HttpGet("GetGallery")]
public async Task<IActionResult> GetGallery()
{
    List<GalleryImage> galleryImagesDB = await _context.GalleryImages
        //.Include(a => a.ImageTags)
        .ToListAsync();

    return Ok(galleryImagesDB);
}
private List<GalleryImage> galleryImages = new();

protected override async Task OnInitializedAsync()
{
    try
    {
        galleryImages = await Http.GetFromJsonAsync<List<GalleryImage>>("api/Gallery/GetGallery");
    }
    catch (Exception ex)
    {
        Console.WriteLine($"Error in Gallery.OnInitializedAsync : {ex.Message}");
    }
}
.Include(a => a.ImageTags)