如果我有一个Customer
只有简单属性(例如Name
等)的类,那么我可以创建一个CustomersController
从 派生的类ApiController
,并使用 URL 查询我的 Customer 对象/api/customers
。
同样,如果我有一个Order
具有简单属性 ( Description
, Amount
) 的类,那么我可以创建一个OrdersController
并以相同的方式访问它。
但是,如果我随后将一个属性添加到我的Customer
类中,该属性列出了Order
与该关联的 s Customer
:
public class Customer
{
public int Id { get; set; }
public string Name { get; set; }
// ...
public virtual ICollection<Order> Orders { get; set; }
}
...然后当我尝试使用查询时,/api/customers
我得到一个 500 服务器错误。我可以在 中放置一个断点,CustomersController
并且可以看到它确实调用了正确的方法,并尝试返回一个值。但是,在框架内部的某个地方,它未能将其转换为 HTTP 响应。
看起来它无法序列化Orders
信息和/或将其打包以用于 HTTP 响应,但我不确定我需要做什么才能实现这一点。或者仅仅是 WebApi 的东西不是为了返回复杂对象而设计的?
更新:我的代码在这里:https ://gist.github.com/43ed2f29f8adfb44cef6
更新 2:有关我得到的错误的更多信息:
Server error The website encountered an error while retrieving http://localhost:1031/api/customers/6.
它可能因维护而停机或配置不正确。以下是一些建议: 稍后重新加载此网页。HTTP 错误 500(内部服务器错误):服务器尝试完成请求时遇到了意外情况。
Intellitrace 日志显示如下:http: //i.imgur.com/iHxJl.png
[我简直不敢相信 Intellitrace 窗口不允许我复制文本,所以我不得不实际打印屏幕并上传图像。今年是哪一年?】