0

次のようなサービスからリストを取得しようとします:

   static void Main(string[] args)
    {
      MyClient proxy = new MyClient();
      List<X> l = proxy.Func(1).ToList();
    }

X はエンティティ フレームワーク プロジェクトの DLL からのクラスです。

サービス中の私の機能は次のようになります。

    public List<X> Func(int NUM)
    {                      
        ProjectContext MyContext = new ProjectContext();
        s = MyContext.X.ToList();
        return s;

    }

私のコンテキストは次のように定義します:

public class ProjectContext : DbContext
{

    public ProjectContext ()
        : base("name=ApplicationServices")
    {
        this.Configuration.ProxyCreationEnabled=false;
        this.Configuration.LazyLoadingEnabled = false;
    }

    public DbSet<XX> X{ get; set; }

}

エラーが発生します:

XXX への HTTP 応答の受信中にエラーが発生しました。これは、サービス エンドポイント バインディングが HTTP プロトコルを使用していないことが原因である可能性があります。これは、HTTP 要求コンテキストがサーバーによって中止されたことが原因である可能性もあります (サービスのシャットダウンが原因である可能性があります)。詳細については、サーバー ログを参照してください。

4

2 に答える 2

3

例外は、循環参照が原因である可能性があります。エンティティのナビゲーション プロパティをIgnoreDataMember属性でマークして、シリアル化に参加しないようにします。

于 2012-10-22T14:35:43.570 に答える
1

私はあなたのように慣れていて、同じエラーが発生しました。そして、このようにクラスXを宣言するデータコントラクトを作成することで、それを解決しました。

[DataContract]
public class StudentX
{       [DataMember]
        public string studentId;
        [DataMember]
        public string studentName;
        [DataMember]
        public string studentBirthday;


        public Studentx(string Id, string Name, string Birthday)
        {
            // TODO: Complete member initialization
            studentId= Id;
            studentName = Name;
            studentBirthday= Birthday;               
        }
 }

クライアントがオブジェクトXを理解していなかったためにエラーが発生した理由は、リストも理解していると思います。

よろしく

于 2012-10-22T07:00:46.160 に答える