WCF 서비스 (Net TCP 바인딩)를 통해 보내려는 CLR 클래스가 있습니다. 클라이언트와 서버 모두 동일한 데이터 클래스와 서비스 인터페이스를 사용합니다. 생성 된 스텁이 없습니다. I는 (/**/
로 표시)의 BindingList
[DataMember]
특성 omitt 경우BindingList <T> as DataMember
[DataContract]
public class ContainerClass
{
//some primitive data with [DataMember] ...
[DataMember] /**/
public virtual BindingList<ItemClass> Items{ get; private set; }
}
[DataContract]
public class ItemClass
{
//some primitive data with [DataMember] ...
public ContainerClass Parent { get; set; } // (no [DataMember])
}
데이터가 정확하게 전송된다 : 여기서 두 종류의 기본 부품이다. 물론, 항목없이.
마자 나는 [DataMember]
, ContainerClass
다음과 같은 오류 메시지와 함께 실패 유형의 개체 반환하는 서비스 메서드 호출, 추가로 :
서버는 의미있는 답변을 제공하지 않았다을; 이는 계약 불일치, 조기 세션 종료 또는 내부 서버 오류로 인해 발생할 수 있습니다.
의도적으로 계약 불일치가 불가능합니다. 내부 서버 오류가있을 수 있으며이를 통보받지 못했습니다.
이 문제를 해결하고 서버가 클라이언트에 항목을 보내도록하려면 어떻게해야합니까?
당신 말이 맞아요. BindingLists를 사용하여 몇 가지 긍정적 인 테스트를 수행했지만. –
방금 다른 이유를 발견했습니다. 필자가'[Serializable] '로 표시 한 기본 클래스는 INOTifyPropertyChanged 인터페이스 및 해당 이벤트를 구현했습니다. 그것은'[DataContract]'가 아니기 때문에, serializer는 실패한 이벤트를 포함한 모든 멤버를 직렬화하려고 시도했습니다. 나는'[DataContract]'속성을 추가했는데 제대로 작동했다. –