2013-05-21 2 views
0

원격 Windows WCF 서비스에 대한 표준 서비스 참조가있는 .net 4.5 클라이언트가 있습니다..NET 4.5 WCF 클라이언트가 잘못된 서버를 처리합니까?

때때로 서버에서 문제가 심각하게 발생하면 서비스 클라이언트가 예상하는 강력한 형식의 응답 대신 실제로 HTML이 반환됩니다. 서버가 소프트웨어가 준수하는 인터페이스/계약을 완전히 위반합니다.

서버가 FaultException을 발생시키지 않습니다. 나는 CommunicationException을 얻지 못한다. 채널에서 발생할 수있는 몇 가지 예외적 인 일들에 대해 {} 블록을 잡았지만, 유효한 비트 대신 HTML 문자열을 가져 오는이 문제를 명시 적으로 처리하는 방법을 결정하기가 어려울 정도입니다.

아무도 내가 명시 적으로 이러한 종류의 서버 활동을 명시 적으로 트랩 할 수 있다고 말할 수 있습니까? 그것은 드문 일이지만, WCF 클라이언트의 행동을 망칠만큼 충분히 발생했습니다.

감사합니다.

+0

"서버에서 FaultException 또는 기타"정상 "을 발생시키는 경우 마크 업 문자열을 보냅니다." 서버가 FaultException을 보내지 않는다는 것을 의미합니까? 그렇지 않으면이 질문을하는 것이 내 생각에 맞지 않을 것입니다. –

+0

원격 서버가 FaultException을 보내지 않습니다. 프록시 클라이언트가 서버에서 메시지를 deserialize 할 때까지 내 "실제"오류가 발생하지 않습니다. 메시지가 사람이 읽을 수있는 HTML 마크 업인 "오류가 발생했습니다. 나중에 다시 시도하십시오." – Snowy

+1

응답이 서비스 계약과 일치하지 않으면 직렬화 해제 예외가 발생해야합니다. 왜 그걸 잡아서 처리 할 수 ​​없습니까? –

답변

0

IIS에서 wcf 서비스를 호스팅하고 서비스 동작에 IncludeExceptionDetailInFaults 속성이있는 serviceDebug 섹션이있는 경우. 서비스가 FaultException 대신 System.Exception에서 파생 된 예외를 throw하면이 문제가 발생합니다.

Windows 서버에서 wcf 서비스를 호스팅한다고 쓰십시오. 따라서 내 응답이 유효하지 않을 수도 있지만 IncludeExceptionDetailInFaults 설정을 확인해야합니다.