2008-10-01 4 views
2

WCF에 구현 된 일부 REST 웹 서비스가 있습니다. XML에 잘못된 요소가 들어있을 때 이러한 서비스가 "잘못된 요청"을 반환하도록하고 싶습니다.WCF XmlSerializer 제어

XmlSerializer에서 xml serialization을 처리하고 있습니다. 기본적으로 XmlSerializer는 알 수없는 요소를 무시합니다. XmlSerializer.UnknownElement를 연결하고이 처리기에서 예외를 throw하는 것이 가능하다는 것을 알고 있지만 WCF에 있기 때문에 직렬화를 제어 할 수 없습니다. 어떻게하면이 동작을 구현할 수 있는지 모든 아이디어.

답변

2

"나는 XmlSerializer.UnknownElement 후크이 핸들러에서 예외를 throw 할 수 있습니다 알고 있지만,이 WCF에 있기 때문에 내가 직렬화를 제어 할 수 없습니다"이렇게

그것 실제로 가능 ..

내가 작업 한 WCF 프로젝트에서 우리는 IDispatchMessageFormatter 인터페이스를 사용하여 비슷한 작업을 수행했습니다.

자세한 내용은 여기 http://nayyeri.net/blog/use-idispatchmessageformatter-and-iclientmessageformatter-to-customize-messages-in-wcf/

발견이

+0

링크가 죽었 등 직렬화/역 직렬화, 반환 상태 코드를 제어, 메시지 헤더 당신에게 피크를 허용 할 수 있습니다. –

1

아마 당신은 IXmlSerializable 및 구현 자신의 유형을 반환 할 수 있습니다 당신이되는 ReadXml와되는 WriteXml 방법에서 원하는 예외 ...

이 모호 메모리에서입니다
1

나는 손으로하는 모든 코드를 가지고 있지 않는 한,하지만 thorw REST 서비스에서 리턴하고 사용자 정의 응답을 작성하는 특정 메소드를 대체하기 위해 사용자 정의 Message (클래스 "Message"에 대해 상속) 유형을 작성할 수 있습니다.

protected override void OnWriteMessage(XmlDictionaryWriter writer) 
    { 
     ... 
    } 

    protected override void OnWriteStartEnvelope(XmlDictionaryWriter writer) 
    { 
     ... 
    } 

    protected override void OnWriteStartBody(XmlDictionaryWriter writer) 
    { 
     ... 
    } 

    protected override void OnWriteBodyContents(XmlDictionaryWriter writer) 
    { 
     ... 
    } 

완전한 대답은 아니지만 정확한 경로로 안내 할 수 있습니다.

관련 문제