2012-02-02 5 views
0

wcf를 통해 통신하는 ProvideFault() 서비스가 있습니다. 대부분의 경우, 우리는 그들을 잡아 FaultException<CustomException>으로 변환하고 호출자가 처리하도록합니다. 따라서 우리는 ProvideFault()을 구현했습니다.왜 ProvideFault가 내 TimeoutExceptions를 잡을까요?

지금까지는 너무 좋아서 대부분 작동합니다. 그러나이 서비스는 다른 서비스를 호출하기 때문에 때로는 TimeoutExeption; 우리는 예외를 잡기를 원하지 않지만 호출자에게 거품을 내 보냅니다 (또는 필요하다면 새로운 TimeoutException 던지기도합니다). 문제는 메서드가 TimeoutException을 throw 할 때 ProvideFault()이이를 처리하고 FaultException으로 변환하려고 시도한다는 것입니다.

wcf를 강제로 넣으시면 TimeoutException으로 표시됩니다.

답변

1

WCF는 Exception을 FaultExceptions로 전송하므로 Timeout Exception을 버블 할 수 없습니다.

은 당신이 그러나 할 수있는 것은 보낼 것입니다 :

FaultException<TimeoutException> 
+0

을하지만 그때 나는 오류 예외 로 잡을 수 있습니다. 클라이언트는 이미 TimeoutException을 처리하고 있으며 변경하지 않기를 바랬습니다. – GavinSteyn

+0

둘 다 잡아야합니다. 시간 초과가 발생한 곳을 볼 수 있기 때문에 긍정적일 수도 있습니다. –