ASP.NET Web API – 实体框架 – .Include上的500内部服务器错误
我目前正在开发一个使用Entity Framework的
Database-First方法的Web API项目(我知道它不是最稳定的平台),但我遇到了一些非常奇怪的事情.
当我的APIController中的GET方法尝试返回DbSet中所有涉及LINQ Include()方法的记录时,它将返回500错误: // GET api/Casinos public IEnumerable<casino> Getcasinos() { var casinos = db.casinos.Include(c => c.city).Include(c => c.state); return casinos.AsEnumerable(); } 但是,这种方法工作正常,并从我的数据库中返回我的数据: // GET api/States public IEnumerable<state> Getstates() { return db.states.AsEnumerable(); } 所以我在其他实例中已经证明,如果它返回没有LINQ查询的实体,它可以很好地工作,但是当在DbContext上使用Include方法时,它会失败. 当然,尝试找到这个错误是不可能的,即使使用Fiddler,Chrome / Firefox开发工具,并添加GlobalConfiguration.Configuration.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always; 如果有人已经解决了这个问题,那么知道一个好的解决方案会很好,所以我可以开始返回我的数据!谢谢!:) 附:我正在使用SQL Server 2012 解决方法
这是由于序列化错误(Json / XML)而发生的.问题是你是直接尝试通过线路传输你的模型.例如,看到这个:
public class Casino { public int ID { get; set; } public string Name { get; set; } public virtual City City { get; set; } } public class State { public int ID { get; set; } public string Name { get; set; } [XmlIgnore] [IgnoreDataMember] public virtual ICollection<City> Cities { get; set; } } public class City { public int ID { get; set; } public string Name { get; set; } public virtual State State { get; set; } [XmlIgnore] [IgnoreDataMember] public virtual ICollection<Casino> Casinos { get; set; } } public class Context : DbContext { public Context() : base("Casino") { } public DbSet<Casino> Casinos { get; set; } public DbSet<State> States { get; set; } public DbSet<City> Cities { get; set; } } 注意XmlIgnore和IgnoreDataMember.您需要限制避免序列化,因此不会以循环方式发生.此外,上述模型仍然不起作用,因为它具有虚拟.从城市,城市,赌场和国家的所有地方删除虚拟,然后它会工作,但这将是低效的. 总结:使用DTO并仅发送您真正想要发送的数据,而不是直接发送模型. 希望这可以帮助! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp-classic – 经典ASP的好IDE?
- asp.net – $(“#dialog”).parent().appendTo($(“form:f
- ASP.net错误:BC30037:字符无效
- asp.net – 在同一行(左右)对齐标签和文本框
- asp.net-mvc – 如何检查MVC cshtml页面中的调试模式
- asp.net-mvc-4 – bundle(Sytem.Web.Optimization)如何为bu
- ASP.NET MVC的MS应用程序示例?
- asp.net – 如何在web.config中定义using语句?
- asp.net – 当请求具有查询字符串时,Web服务的缓存不起作用
- asp.net-mvc-3 – Firefox页面没有正确重定向
- asp.net – 操纵HTTP响应
- asp.net – ‘System.Web.UI.WebControls.TextBo
- asp.net-mvc – Orchard CMS:未显示内容部分
- .net – 如何序列化邮件?
- asp.net – ADO.NET在.NET内核可能吗?
- asp.net-mvc-4 – 在asp.net mvc应用程序中集成P
- asp.net-mvc-3 – 如何使用Ninject将服务注入MVC
- asp.net-mvc – 将我的网站重定向到mvc中的默认控
- asp.net-mvc-3 – Telerik MVC Grid中的自定义寻
- ASP.NET Web Form Project行动平台直立与横放自动