gpt4 book ai didi

c# - 使用 WebAPI 时出现 SerializationException

转载 作者:太空宇宙 更新时间:2023-11-03 12:48:09 27 4
gpt4 key购买 nike

尝试通过 WebApi get 返回列表时出现 SerializationException。

Full error message on pastebin

这是我的代码:

HomeController.cs:

public IEnumerable<Article> Get() {
return repo.GetArticles();
}

存储库.cs:

public List<Article> GetArticles() {
using (var db = new ArticlesContext()) {
return db.Articles.ToList();
}
}

ArticlesContext.cs:

public class Article {
[Key]
public int ArticleID { get; set; }
public string Title { get; set; }
public int UserID { get; set; }

[ForeignKey("UserID")]
public virtual User Author { get; set; }
}

public class User {
[Key]
public int UserID { get; set; }

[ForeignKey("ArticleID")]
public virtual List<Article> Articles { get; set; }
}

public class ArticlesContext : DbContext {
public DbSet<Article> Articles { get; set; }
public DbSet<User> Users { get; set; }

public ArticlesContext() : base("name=conn") {
//etc
}
}

最佳答案

大多数序列化问题通常源于正在提取的现有循环引用或与格式相关的问题(即 JSONXML 等)。

您可以检查代理生成和延迟加载等属性是否已启用并禁用它们,以尝试在您的 DbContext 的构造函数中解决问题:

 this.Configuration.LazyLoadingEnabled = false;
this.Configuration.ProxyCreationEnabled = false;

您可以尝试在 Global.asax 文件中添加以下部分来处理循环引用:

GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;

另一个显式忽略 XML 序列化:

GlobalConfiguration.Configuration.Formatters.Remove(GlobalConfiguration.Configuration.Formatters.XmlFormatter);          

关于c# - 使用 WebAPI 时出现 SerializationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36524639/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com