Как обрабатывать ошибки низкого уровня 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. Мне, вероятно, придется реализовать свой собственный канал, если я хочу обработать этот тип исключения. Я обновлю этот пост еще раз, когда у меня будет больше информации.