当我尝试查询MVC 4 WebApi服务时出现以下错误
Extra content at the end of the document
Below is a rendering of the page up to the first error.
55Author Namehttp://images.myserver.com/authorspictures/nophoto.jpg
我查看了Linq To Sql生成的Author类,发现在图像URL之后的Author对象的下一个属性就是这个:
[Association(Name = "Author_Quote", Storage = "_Quotes", ThisKey = "Id", OtherKey = "AuthorId")]
public EntitySet<Quote> Quotes { get; set; }
我的承诺是,为此属性生成XML会导致上述错误。但是,我不知道如何防止这种情况并使其正常工作。我发现的关于webApi的大多数例子都使用了POCO列表,所以他们无法帮助我解决这个问题。
有任何建议吗?
以下是我的代码
public class AuthorController : ApiController
{
IAuthorRepository repository;
public AuthorController(IAuthorRepository repository)
{
this.repository = repository;
}
[ResultLimit(20)]
public IQueryable<Author> GetAuthors(){
return repository.GetAuthors();
}
}
public class DBAuthorRepository : IAuthorRepository
{
public IQueryable<Author> GetAuthors()
{
using (var context = new QuotesDataContext())
{
return context.Authors.ToList().AsQueryable();
}
}
}
答案 0 :(得分:3)
我发现它是由延迟加载引起的。所以我添加了以下内容,现在它可以正常工作。
public class DBAuthorRepository : IAuthorRepository
{
public IQueryable<Author> GetAuthors()
{
using (var context = new QuotesDataContext())
{
context.DeferredLoadingEnabled = false; // Added this line
return context.Authors.ToList().AsQueryable();
}
}
}
答案 1 :(得分:0)
我在mvc4 webapi中遇到上述错误,从@alexandrekow回答,我找到了解决方案:
entity = new BrewedlifeEntities();
entity.ContextOptions.ProxyCreationEnabled = false; // Added this line