Estoy escribiendo un servicio WCF por primera vez. El servicio y todos sus clientes (al menos por ahora) están escritos en C#. El servicio tiene que hacer una gran cantidad de validación de entrada en los datos que se pasan, así que tengo que tener alguna forma de indicar datos inválidos al cliente. He estado leyendo mucho sobre fallas y excepciones, envolviendo excepciones en fallas y muchos artículos conflictivos que me confunden más. ¿Cuál es la forma correcta de manejar este caso?Fallos y excepciones WCF
¿Debo evitar las excepciones por completo y empaquetar un mensaje de devolución de resultados? ¿Debo crear una falla especial o una excepción especial, o simplemente lanzar ArgumentExceptions como lo haría para una función de validación que no sea WCF?
El código que ahora he (influenciado por MSDN) es:
[DataContract]
public class ValidationFault
{
[DataMember]
public Dictionary<string, string> Errors { get; private set; }
[DataMember]
public bool Fatal { get; private set; }
[DataMember]
public Guid SeriesIdentifier { get; private set; }
public ValidationFault(Guid id, string argument, string error, bool fatal)
{
SeriesIdentifier = id;
Errors = new Dictionary<string, string> {{argument, error}};
Fatal = fatal;
}
public void AddError(string argument, string error, bool fatal)
{
Errors.Add(argument, error);
Fatal |= fatal;
}
}
Y en el método que hay [FaultContract (typeof (ValidationFault))]. Entonces, ¿es esta la forma "correcta" de abordar esto?
Para cualquier persona interesada, aquí está el [enlace] (http://msdn.microsoft.com/en-us/library/ff953182 (v = pandp.50) .aspx) para la guía de inicio del Bloque de validación EntLib . – Crackerjack