4

空の 500 を返す WebAPI に問題があります。

これがデータクラスです。

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;ましたが、役に立ちませんでした。私はここで途方に暮れています!

4

3 に答える 3

5

循環オブジェクトグラフがあるためだと思いますが、これはシリアル化エラーの原因になります。

http://www.asp.net/web-api/overview/formats-and-model-binding/json-and-xml-serialization#handling_circular_object_references

于 2012-06-27T14:13:42.100 に答える
0

おそらくICollection<Comment> Commentsorの連載ですCategory Category

于 2012-06-27T12:26:14.073 に答える
0

私は同じ問題に遭遇していました。GlobalConfiguration ポリシーに加えて、web.config に以下を含める必要がある場合があります。

<system.webServer>
  <httpErrors existingResponse="PassThrough" />
</system.webServer>
于 2012-06-27T11:51:58.490 に答える