¿Cómo manejar errores WCF de bajo nivel?
Tengo el error estándar entregado en mi servicio:
Tengo un IErrorHandler conectado al servicio para manejar errores inesperados durante la ejecución del servicio.Tengo bloques try / catch en todos mis métodos de servicio para manejar los casos esperados.Sin embargo, hay casos en los que se generan excepciones en el servidor y no se llama a ninguno.
Aquí hay un caso en el que la excepción del servidor no se envía a IErrorHandler:
Establezca receiveTimout en el enlace del servidor en 5 segundos.
En el cliente hacer esto:
.
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
En ese caso, el error se produce en el servidor, pero no puedo encontrar una manera de manejarlo (y registrarlo). Sé que se genera un error porque si adjunto un depurador en el proceso del servidor y rompo todas las excepciones, el depurador se rompe.
He encontrado otros casos similares en los que los errores de bajo nivel no se pasan a mi programa.
¿Dónde puedo conectar mi código para asegurarme de que puedo manejar TODAS las excepciones que ocurren en el servidor antes de que se devuelvan a la aplicación cliente? ¿Debo implementar mi propio canal IC o alguna otra interfaz de bajo nivel?
Gracias
ACTUALIZACIÓN 21 de septiembre 2009: Veresta hilo en el foro de WCF de Microsoft. Probablemente tendré que implementar mi propio canal si quiero manejar este tipo de excepción. Voy a actualizar esta publicación de nuevo cuando tenga más información.