문제

사양에 웹 서비스를 작성하려고 노력하고 있으며 메소드가 성공적으로 완료되는지 여부에 따라 다른 응답 본문이 필요합니다. 두 가지 다른 데이터 계정 클래스를 만들려고했지만 어떻게 반품하고 올바르게 직렬화 할 수 있습니까?

도움이 되었습니까?

해결책

정답은 그러나 그것은 까다 롭고 인터페이스에서 강한 타이핑을 잃게됩니다. 반환하면 a 개울 그런 다음 데이터는 XML, 텍스트 또는 이진 이미지 일 수 있습니다. DataContract 클래스의 경우 다음을 사용하여 데이터를 직렬화합니다. DataContractSerializer.

참조 Blogsvc 더 구체적으로 restatompubservice.cs WCF 서비스 자세한 사항은. 이 소스 코드는 또한 콘텐츠 유형 맵퍼가 필요한 WCF REST 메소드로 다른 유형의 데이터를 수락하는 방법을 보여줍니다.

다른 팁

WCF 웹 서비스가 실패했음을 나타내는 가장 좋은 방법은 Faultexception을 던지는 것입니다. 서비스 web.config 파일에는 전체 결함 메시지를 오류의 일부로 클라이언트에게 전달할 수있는 설정이 있습니다.

또 다른 접근법은 동일한 기본 클래스 또는 인터페이스에서 두 결과를 상속하는 것입니다. 서비스는 기본 유형의 인스턴스를 반환합니다. 그런 다음 알려진 유형 속성을 사용하여 클라이언트에게 여러 유형을 반환 할 수 있음을 알릴 수 있습니다. 그것을 생각해 보면, 객체를 기본 유형으로 사용하는 것이 가능할 수도 있지만 시도하지 않았습니다.

이러한 접근 방식 중 하나에 실패하면 결과 및 오류 속성이 모두 포함 된 사용자 정의 결과 객체를 만들 수 있으며 클라이언트가 수행 할 조치 과정을 결정할 수 있습니다. 베타 2가 아직 결함 계약을 완전히 지원하지 않기 때문에 Silverlight 2 에이 접근법을 사용해야했습니다. 그것은 예쁘지 않습니다. 나는 평소에 그것을 추천하지 않을 것입니다. 그러나 그것이 효과가있는 유일한 방법이거나 그것이 당신의 상황에 가장 적합한 접근법이라고 생각한다면 ...

Ado.net Data Services에 문제가있는 경우 경험이 적습니다.

다음은 몇 가지 정보입니다 결함 계약 구현시

XML 기반 바인딩을 사용하고 있다면 그렇게 할 방법이 없다고 생각합니다. 이 경우 간단한 솔루션은 실패가있는 경우 메시지 플래그의 일부를 갖고 필요한 경우 어딘가에 실패 정보를 저장하는 것입니다. JSON 바인딩의 경우 객체를 반환하는 메소드를 사용한 다음 두 가지 다른 유형의 객체를 반환 할 수 있습니다. 내가 올바르게 기억한다면 (드문 경우), javascriptserializer 클래스는 객체에 직렬화 속성이 깨끗한 경우 반사를 사용하기 때문에 가능합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top