如果我有一个Customer
仅具有简单属性的类(例如Name
等)然后我可以创建一个CustomersController
源自于ApiController
,并使用 URL 查询我的 Customer 对象/api/customers
.
同样,如果我有一个Order
具有简单属性的类(Description
, Amount
)然后我可以创建一个OrdersController
并以同样的方式访问它。
但是,如果我随后将属性添加到我的Customer
列出的类Order
与此相关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 的东西不是为了返回复杂对象而设计的?
Update:我的代码在这里:https://gist.github.com/43ed2f29f8adfb44cef6
Update 2:有关我收到的错误的更多信息:
Server error
The website encountered an error while retrieving http://localhost:1031/api/customers/6.
可能会因维护而停机
或配置不正确。
以下是一些建议:
稍后重新载入此网页。
HTTP 错误 500(内部服务器错误):服务器尝试满足要求时遇到意外情况
要求。
Intellitrace 日志显示以下内容:https://i.stack.imgur.com/8R1XL.png
[我简直不敢相信 Intellitrace 窗口不允许我复制文本,因此我必须实际打印屏幕并上传图像。今年是哪一年?】
有关的:ASP.Net Web API 在 VS 中正确显示,但给出 HTTP 500