Web API错误:'ObjectContent`1'类型无法序列化内容类型的响应正文

jjc*_*c99 4 asp.net-mvc asp.net-web-api

我在尝试使用Web API控制器时收到此错误.

Web API错误:'ObjectContent`1'类型无法序列化内容类型的响应正文

我的控制器中的代码如下

public IEnumerable<Student> GetAllStudents()
    {
        var allstudents = unitOfWork.StudentRepository.Get(includeProperties: "Groups");


        return allstudents;
    }

    public Student GetStudentByID(Guid id)
    {
        return unitOfWork.StudentRepository.GetByID(id);
    }
Run Code Online (Sandbox Code Playgroud)

我的'学生'课程如下

public partial class Student
{
    public Student()
    {
        this.Groups = new HashSet<Group>();
    }

    public System.Guid StudentID { get; set; }
    public string Surname { get; set; }
    public string FirstName { get; set; }
    public byte[] Timestamp { get; set; }

    public virtual Course Course { get; set; }
    public virtual ICollection<Group> Groups { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

两种方法都会导致相同的错误.

我内心的例外情况如下

:数据合同名称"Student_4C97D068E1AD0BA62C3C6E441601FFB7418AD2D635F7F1C14B64F4B2BE32DF9A类型"System.Data.Entity.DynamicProxies.Student_4C97D068E1AD0BA62C3C6E441601FFB7418AD2D635F7F1C14B64F4B2BE32DF9A" http://schemas.datacontract.org/2004/07/System.Data.Entity.DynamicProxies预计不会".考虑使用DataContractResolver或将任何静态未知的类型添加到已知类型列表中 - 例如,通过使用KnownTypeAttribute属性或将它们添加到传递给DataContractSerializer的已知类型列表中.

我有一种感觉,我需要使用该KnownType属性,但我不确定如何实现它.

任何帮助,将不胜感激

Edw*_*rey 7

如果您不需要代理类(System.Data.Entity.DynamicProxies.Student_4C97D068E1A...)提供的延迟加载的导航属性,则可以通过设置以下内容来禁用它们的生成:

unitOfWork.Configuration.ProxyCreationEnabled = false;
Run Code Online (Sandbox Code Playgroud)

如果你需要代理类怎么办是另一个问题.


请按照以下链接获取延迟加载和代理的详细概述:

我通常默认禁用延迟加载和代理,并在需要它们的特定代码块中启用一个或两个.


归档时间:

查看次数:

10369 次

最近记录:

11 年,2 月 前