2010-04-05 5 views
5

예를 들어, 새로운 InvalidCastException을 던지면 클라이언트 측의 채널 상태가 잘못되었음을 발견했습니다. 그러나 새로운 FaultException을 던지면 클라이언트 측의 채널 상태가 열립니다.Wcf 예외 처리

호기심 때문에 채널에 오류가 발생하고 다른 채널에 오류가 발생하는 이유는 무엇입니까?

답변

12

FaultException은 WCF의 특별한 경우입니다. 이는 서비스 측에서 오류가 발생했음을 나타 내기위한 것이지만 동시에 채널에 오류가 없음을 의미합니다. FaultContractAttribute을 사용하여이 정보를 계약에 포함시킬 수 있으므로 계약에서 기대할 수있는 정보가 노출 될 수 있다는 점을 감안할 때 이는 의미가 있습니다.

다른 예외는 WS 세계에서 실제로 번역 할 수 없습니다. 예외는 기술 별 추상화이며 각 기술 스택은 해당 추상화와는 다른 표현을 갖습니다 (경우에 따라 전혀 없음).

가 불명으로 고장 예외가 서버 측에서 발생되지 않으며 는 그것이 WCF 런타임 같은 치명적인 볼되는 예외 및 채널 , 폴트해야 상기 되 그게

, 진행할 수 있는지 여부.

그러나 FaultException을 사용하면 예외가 발생한 이유와 기본 채널에 영향을 주 었는지 여부에 대한 선견지명이 있음을 의미합니다.

+0

설명해 주셔서 감사합니다. 나는 그것을 생각하고 있었고, 그것이 정확하다는 것을 확실히하고 싶었다. – pdiddy

+1

@pdiddy : 아무 문제가 없다. 많은 사람들이 WCF가 .NET의 모든 것을 WS 세계에 직접 매핑하는 것이 아니라, 당신이 그것에 대해 알아야 할 매우 실제적인 것들. – casperOne