2010-07-01 5 views
0

내가 좋아하는 내 웹 서비스를 acessing 후 오류를 받고 있어요을하지 않고 WCF의 웹 서비스를 반환합니다.나는 직렬화 오류

'System.Xml.XmlDocument'형식을 serialize 할 수 없습니다. DataContractAttribute 특성으로 표시하고 DataMemberAttribute 특성을 사용하여 직렬화 할 모든 구성원을 표시하는 것이 좋습니다. 다른 지원되는 유형은 Microsoft .NET Framework 설명서를 참조하십시오.

src가 상당히 간단하다

public interface IService1 
{ 
[OperationContract] 
[WebGet(ResponseFormat = WebMessageFormat.Xml)] 
XmlDocument TwitterGetPublicTimeline(); 
} 

및 WebService에 : 나는 문서 느릅 나무는 허용되지 않습니다 "로 시작되는 문자열을 가지고 돌아 오면

public XmlDocument TwitterGetPublicTimeline() 
    {    
     var t = new Yedda.Twitter(); 
     return t.GetPublicTimelineAsXML(); 
    } 

.. : |

답변

2

XmlDocument는 (알아 낸 것처럼) 직렬화 할 수 없습니다. 또한 interop 용 WS 호출에서 프레임 워크 유형을 반환하지 않아야합니다. 가장 좋은 방법은 xml을 문자열로 반환하고 클라이언트가이를로드 할 수있게하는 것입니다. 클라이언트 고유의 DOM 또는 직렬화 가능한 커스텀 타입을 돌려줍니다.

2

당신은 단지 String 및 클라이언트 측에 반환 XmlDocument로 다시 변환 XmlDocument.LoadXml() 방법을 사용

public String TwitterGetPublicTimeline() 
    { 
     var t = new Yedda.Twitter(); 
     return t.GetPublicTimelineAsXML().InnerXml; 
    } 

에 방법을 변경할 수 있습니다.

+0

태그를 추가하면 자동으로 태그와 일부 Microsoft 네임 스페이스가 추가됩니다. – Pedro

+0

예, ResponseFormat = WebMessageFormat.Xml 때문입니다. 귀하의 클라이언트가 .Net 클라이언트입니까? 왜냐하면 그것은 작동해야합니다! 그렇지 않으면, 생성 된'XML' 안에있는 텍스트를 읽을 수있는 코드를 작성할 수 있으며, 매번 같을 것이기 때문에 의존 할 수 있습니다. – decyclone

관련 문제