0

当我尝试查询我的 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();
        }
    }
}
4

2 回答 2

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();
        }
    }
}
于 2012-05-17T13:16:41.643 回答
0

我在 mvc4 webapi 中收到上述错误,形成 @alexandrekow 答案,我找到了解决方案:

 entity = new BrewedlifeEntities();
 entity.ContextOptions.ProxyCreationEnabled = false; // Added this line
于 2012-10-26T15:02:20.647 回答