2010-04-29 17 views
5

En WCF, ¿hay algún evento o método que capture excepciones no controladas, o debo poner try/catch en algún método?Captura excepción no controlada en WCF

+0

¿por qué se desea capturar excepciones no controladas? ¿Qué quieres hacer con ellos? ¿Quieres hacer esto en un cliente o en un servicio? –

+0

Uno de los objetivos podría ser capturar/registrar la excepción en un archivo de registro estándar fuera del seguimiento de WCF Diagnostics. – Jeremy

+0

¿Lo has descubierto hasta ahora? También estoy tratando de hacer algo similar sin éxito – Ton

Respuesta

7

Sí, crear una clase que implementa la interfaz IErrorHandler:

Permite un implementador para controlar el mensaje de error devuelto a la persona que llama y, opcionalmente, realiza el procesamiento de error personalizado como la tala.

+1

Es muy complicado, ¿puedes dar una muestra? y, lo necesita al lado del servidor. no cliente Gracias – zvi

+1

Nota para los que lleguen tarde a esta respuesta: las implementaciones de IErrorHandler no se utilizan en WCF Data Services. En su DataService , anule la excepción HandleException. Si tiene alojamiento propio, también considere manejar: AppDomain.CurrentDomain.UnhandledException y TaskScheduler.UnobservedTaskException –

0

Debe hacer Bloques TRY/Catch internos y externos.

Así que el primer método comienza con Intenta

Entonces si algo se lanza dentro de otro método por defecto para su captura genérico en el método que está en el método expuesto a devolver un valor para el cliente.

Siempre utilizo el registro en mis bloques de captura para decirle a un administrador qué salió mal pero siempre obtuve el valor de la captura externa como "Por favor, excepto nuestras Appogies el servicio WCF.Blah ha fallado. Revise los registros del servidor para los detalles completos"

esta manera usted tiene el control de errores, el registro y los mensajes agradables a sus clientes ..

public class Service1 : IService1 
    { 
    public string GetData(int value) 
    { 
     try 
     { 
      return somemethod(value); 
     } 
     catch(Exception ex) 
     { 
      LoggingHelper.Log(ex); 
      return "Please Except our Appogies the WCF.Blah service has failed. Please review the server logs for complete details"; 
     } 
    } 
+1

Necesito más de 1 wcf Service mathod. ¿Hay algo similar al evento "onerror" en global.asa, en ASP.NET que captura todas las excepciones no controladas? – zvi

Cuestiones relacionadas