내 클라이언트 클래스에서 Faulted()
이벤트를 처리 중이므로 원격 서비스에서 예외가 발생하고 채널에 오류가 발생해도 정상적으로 종료 할 수 있습니다.System.ServiceModel.Diagnostics.CallbackException이란 무엇이며 처리 할 수없는 이유는 무엇입니까?
protected void RemoteDataRetriever_Faulted(object sender, EventArgs e)
{
(sender as ICommunicationObject).Abort();
this.Dispose();
throw new ChannelTerminatedException("The remote service threw an unhandled exception and as a result the channel has been closed.");
}
그래서 내가 무엇을 기대하는 것은 클라이언트가 내가 수동으로 던져 한 ChannelTerminatedException
를 처리하고 대신 내 예외가 System.ServiceModel.Diagnostics.CallbackException
에 싸여지고 등 사용자에게 메시지를 보낼 수 있다는 것입니다 : 여기에 내 코드입니다. 알았어 괜찮아. CallbackException은 ServiceModel 라이브러리에 존재하지 않으며 제 단위 테스트에 좋지 않은 일반 Exception
을 제외하고는 처리 할 방법이없는 것처럼 보입니다. 도대체 무슨 일이 벌어지고있는거야? 어떻게 든 그것을 무력화시키고 내가 원했던 예외를 던질 수 있습니까?
직접 예외를 던지고 있기 때문에 포장되지 않은 다른 예외를 사용할 수 있습니까? 나는 당신이 그 밑에 WCF를 사용하고 있다는 사실을 드러내지 않는 무언가를 생각하고 있습니다 ... –
주사위가 없습니다. 나는 ChannelTerminatedException을 StackOverflowException으로 변경했다. 그리고 그것은 여전히 성가신 CallbackException으로 감싸고있다. (던지면 내부 예외가된다.) "사용자 콜백에서 예외가 발생했습니다. 예외 스택과 내부 예외를 확인하여 실패한 콜백을 확인하십시오."라는 성가신 메시지가 나타납니다. 예, 콜백이 예외를 던졌습니다. 나는 그것을 던진 사람이었다! 더 많은 연구를하고 WCF 플래그/매개 변수가 어딘가에 있는지 확인하여이 동작을 사용하지 않도록 설정할 것입니다. –