4

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);
    }

私の「学生」クラスは次のとおりです

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; }
}

どちらの方法でも同じエラーが発生します。

私の内部例外は次のとおりです

Type 'System.Data.Entity.DynamicProxies.Student_4C97D068E1AD0BA62C3C6E441601FFB7418AD2D635F7F1C14B64F4B2BE32DF9A' with data contract name 'Student_4C97D068E1AD0BA62C3C6E441601FFB7418AD2D635F7F1C14B64F4B2BE32DF9A: http://schemas.datacontract.org/2004/07/System.Data.Entity.DynamicProxies ' is not expected. DataContractResolver の使用を検討するか、既知の型のリストに静的に認識されていない型を追加します。たとえば、KnownTypeAttribute 属性を使用するか、DataContractSerializer に渡される既知の型のリストにそれらを追加します。

属性を使用する必要があると感じていKnownTypeますが、実装方法が正確にはわかりません。

どんな助けでもいただければ幸いです

4

2 に答える 2

7

プロキシ クラス ( ) によって提供される遅延読み込みナビゲーション プロパティが必要ない場合は、次のSystem.Data.Entity.DynamicProxies.Student_4C97D068E1A...ように設定して生成を無効にすることができます。

unitOfWork.Configuration.ProxyCreationEnabled = false;

プロキシ クラスが必要な場合の対処方法は別の問題です。


遅延読み込みとプロキシの概要については、次のリンクをたどってください。

私は通常、デフォルトで遅延読み込みとプロキシを無効にし、それらを必要とする特定のコード ブロックで一方または両方を有効にします。

于 2013-03-08T17:34:32.547 に答える
1

内部例外メッセージとは何ですか? 内部例外メッセージは、シリアライザーによってスローされる実際の例外であり、例外の原因となっている型を通知する必要があります。

推測させてください - それはタイプCourseとタイプGroupですか?もしそうなら、KnownTypeあなたの実際の実装タイプに属性を入れてみてくださいclass Student

[KnownType(typeof(GroupA))]
[KnownType(typeof(CourseA))]
public partial class Student
{...}

public class GroupA : Group {...}
public class CourseA : Course {...}

public interface Group {...}
public interface Course {...}
于 2012-10-17T15:23:29.410 に答える