2009-07-24 4 views
1

모두를 인식하지 못합니다 나는 다음과 같은 웹 서비스가 : 나는 목적에 의해 간단했습니다WCF 서비스는 사용자 정의 클래스 및 방법

[ServiceContract(Namespace = "")] 
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 
    public class MyTestClass 
    { 
     [OperationContract] 
     public List<TrackInfo> GetAll(string songName) 
     { 
      return new List<tracksInfo>; 
     } 
} 

합니다. Anyhows는 서비스 참조 외부의 클래스에서 TrackInfo가 선언 될 때 Silverlight 영역을 의미하는 다른 끝의 서비스는 TrackInfo 클래스 만 인식하지만 GetAll 메서드는 찾을 수 없습니다. 내가 참조 내부하지만 MyTestClass 이외의 동일한 문제가

가 나는 datacontract로 serivce 내부의 trackinfo 클래스를 넣어 시도 발생 trackinfo 클래스를 넣어하려고 할 때 :

[DataContract] 
    public class TrackInfo 
    { 
     public int ID { get; set; } 
     //Should consider using a stream instead 
     public List<Image> FullSizeNotes { get; set; } 
     public Image TrackNotes { get; set; } 
     public Stream MidiFile { get; set; } 
    } 

지금 서비스가 GETALL 기능을 인식하고, 그러나 trackinfo의 속성을 인식하지 못합니다.

답변

1

데이터 계약은 ASMX 서비스의 XML 직렬화 프로그램과 달리 "옵트 인"기술입니다. 그 말은 당신이 달리 말하지 않는 한 모든 공개 필드와 공개 읽기/쓰기 속성을 직렬화했습니다.

데이터 계약에는 [DataMember] 속성으로 장식하려는 일련 화 속성이 있어야합니다.

[DataContract] 
public class TrackInfo 
{ 
     [DataMember] 
     public int ID { get; set; } 
     //Should consider using a stream instead 
     [DataMember] 
     public List<Image> FullSizeNotes { get; set; } 
     [DataMember] 
     public Image TrackNotes { get; set; } 
     [DataMember] 
     public Stream MidiFile { get; set; } 
} 
0

.NET 3.5 SP1과 함께 작동 또 다른 방법은, 당신이 그들을 필요가 없습니다 귀하의 실체를 구체화하는 것입니다.

http://community.irritatedvowel.com/blogs/pete_browns_blog/archive/2009/07/13/Sharing-Entities-between-WCF-and-Silverlight.aspx

는 기본적으로 클라이언트와 서버 및 서비스 참조를 설정할 때, 이미 존재 유형을 재사용 VS 말할 사이의 클래스 파일의 코드를 공유 : 전체 그림에 대한 설명을 읽어 보시기 바랍니다 고객.

피트

관련 문제