Como lidar com erros WCF de baixo nível?

Eu tenho o erro padrão entregando no meu serviço:

Eu tenho um IErrorHandler ligado ao serviço para lidar com erros inesperados durante a execução do serviço.Eu tenho blocos try / catch em todos os meus métodos de serviço para lidar com casos esperados.

No entanto, há casos em que exceções são lançadas no servidor e nenhuma é chamada.

Aqui está um caso em que a exceção do servidor não é enviada para o IErrorHandler:

Defina o receiveTimout na ligação do servidor para 5 segundos.

No cliente faça isso:

.

Service1Client sc = new Service1Client();
ICommunicationObject o = sc as ICommunicationObject;

o.Open(); // open channel

sc.GetData(10); // do a first call

Thread.Sleep(10000); // wait longer than the server receiveTimeout

sc.GetData(10); // Attempt another call: server throws a FaulException

Nesse caso, o erro é lançado no servidor, mas não consigo encontrar uma maneira de manipulá-lo (e registrá-lo). Eu sei que um erro é gerado porque se eu anexar um depurador no processo do servidor e quebrar todas as exceções, o depurador será interrompido.

Eu encontrei outros casos semelhantes onde erros de baixo nível não são passados ​​para o meu programa.

Onde posso ligar meu código para garantir que posso manipular TODAS as exceções que ocorrem no servidor antes que elas sejam retornadas ao aplicativo cliente? Devo implementar meu próprio IChannel ou alguma outra interface de baixo nível?

obrigado

ATUALIZAÇÃO 21 de setembro de 2009: Vejoisto thread no fórum do Microsoft WCF. Provavelmente terei que implementar meu próprio canal se quiser lidar com esse tipo de exceção. Eu atualizarei este post novamente quando tiver mais informações.

questionAnswers(4)

yourAnswerToTheQuestion