Как обрабатывать ошибки низкого уровня WCF?

У меня есть стандартная ошибка обработки в моем сервисе:

I have an IErrorHandler hooked to the service to handle unexpected errors during service execution. I have try/catch blocks in all my service methods to handle expected cases.

Однако существуют случаи, когда на сервер выдается исключение, и ни один из них не вызывается.

Вот случай, когда исключение сервера не отправляется IErrorHandler:

Set the receiveTimout on the server binding to 5 seconds.

On the client do this:

.

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

В этом случае ошибка генерируется на сервере, но я не могу найти способ ее обработать (и записать в журнал). Я знаю, что возникает ошибка, потому что, если я присоединяю отладчик к процессу сервера и перебиваю все исключения, отладчик ломается.

Я нашел другие подобные случаи, когда ошибки низкого уровня не передаются в мою программу.

Где я могу перехватить свой код, чтобы убедиться, что могу обрабатывать ВСЕ исключения, возникающие на сервере, прежде чем они будут возвращены в клиентское приложение? Должен ли я реализовать свой собственный IChannel или какой-либо другой интерфейс низкого уровня?

Спасибо

UPDATE Sep 21 2009: Увидетьэтот нить на форуме Microsoft WCF. Мне, вероятно, придется реализовать свой собственный канал, если я хочу обработать этот тип исключения. Я обновлю этот пост еще раз, когда у меня будет больше информации.

Ответы на вопрос(4)

Ваш ответ на вопрос