我的asp.net MVC应用程序的Web API部分有一些问题。该应用程序在使用MVC控制器和视图时运行良好,但当尝试通过我的web api 2控制器返回订单及其OrderItem时,我收到以下错误消息:
“ObjectContent`1”类型无法序列化内容类型“application/xml;charset=utf-8”的响应正文。
我想可能是MenuItems的序列化有问题。我尝试从类中删除Virtual-keyword,并使用Include手动包含MenuItems,但仍然得到相同的错误。
为了返回数据,我需要为此创建一个ViewModel吗?我也尝试过JSON.NET,也得到了同样的错误。
我有以下几个类:
public class Order
{
public int Id { get; set; }
public DateTime OrderDate { get; set; }
public virtual ICollection<OrderItem> OrderItems { get; set; }
}
public class OrderItem
{
public int Id { get; set; }
public decimal UnitPrice { get; set; }
public int Quantity { get; set; }
public int Discount { get; set; }
public virtual Order Order { get; set; }
public virtual MenueItem MenueItem { get; set; }
}
public class MenueItem
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
public string Description { get; set; }
public DateTime CreateDate { get; set; }
public DateTime LastChanged { get; set; }
public bool IsActive { get; set; }
public virtual ICollection<OrderItem> OrderItems { get; set; }
}和控制器方法:
// GET: api/Orders
public IQueryable<Order> GetOrders()
{
var orders = db.Orders.Include(c => c.OrderItems);
return orders;
}发布于 2017-03-29 18:42:33
您可以指定转换器忽略循环引用,如下所示:
var orders = JsonConvert.SerializeObject(db.GetOrders(), new JsonSerializerSettings() { ReferenceLoopHandling = ReferenceLoopHandling.Ignore });https://stackoverflow.com/questions/43079269
复制相似问题