我遇到WebAPI问题,返回空500.
这是数据类。
public class Comment
{
public int Id { get; set; }
public string Content { get; set; }
public string Email { get; set; }
public bool IsAnonymous { get; set; }
public int ReviewId { get; set; }
public Review Review { get; set; }
}
public class Review
{
public int Id { get; set; }
public string Content { get; set; }
public int CategoryId { get; set; }
public string Topic { get; set; }
public string Email { get; set; }
public bool IsAnonymous { get; set; }
public virtual Category Category { get; set; }
public virtual ICollection<Comment> Comments { get; set; }
}
这是来自ReviewRepository.cs的代码
public Review Get(int id)
{
return _db.Reviews.Include("Comments").SingleOrDefault(r => r.Id == id);
}
来自ReviewController.cs的代码
public HttpResponseMessage Get(int id)
{
var category = _reviewRepository.Get(id);
if (category == null)
{
return Request.CreateResponse(HttpStatusCode.NotFound);
}
return Request.CreateResponse(HttpStatusCode.OK, category);
}
无论我做什么,来自/ api / reviews / 1的回复都是500错误。调试时,类别是正确的,加载了所有注释。
我尝试了GlobalConfiguration.Configuration.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;
,但这没有用。我在这里不知所措!
答案 0 :(得分:5)
我猜是因为你有一个循环的对象图,这将导致序列化错误。
答案 1 :(得分:0)
我遇到了同样的问题。除了GlobalConfiguration策略之外,您可能还需要在web.config中包含以下内容。
<system.webServer>
<httpErrors existingResponse="PassThrough" />
</system.webServer>
答案 2 :(得分:0)
可能是ICollection<Comment> Comments
或Category Category
的序列化。