在使用带有WebApi的MongoDB C#驱动程序时,我遇到了以下问题。当我想从数据库中读取所有文档(甚至只是一个)时,repo的函数将获得正确的数据,但在WebApi中,从repo返回的对象会导致堆栈溢出。我怀疑我对返回对象的方式做错了。
WebApi调用Repo的方法:
// GET api/<controller>
public async Task<List<Event>> Get()
{
return await _repo.FindAll();
}
// GET api/<controller>/5
public async Task<Event> Get(string id)
{
Event e = await _repo.FindById(id);
return e;
}
Repo中的相应方法:
public async Task<Event> FindById(string id)
{
Event e = await _collection.Find<Event>(x => x.ID == ObjectId.Parse(id)).FirstAsync();
return e;
}
public async Task<List<Event>> FindAll()
{
var filter = new BsonDocument();
List<Event> list = await _collection.Find(filter).ToListAsync();
return await Task<List<Event>>.FromResult(list);
}
提前感谢您的所有帮助!
编辑:我发现当我从函数而不是Event返回字符串时,整个过程都有效。
我认为造成问题的是事件中的ID属性。
答案 0 :(得分:0)
问题是该事件有一个ObjecId属性。 JSON.Net不知道该类型。请在此处查看解决方案:JSON.NET cast error when serializing Mongo ObjectId