Я пишу службу WCF в первый раз. Сервис и все его клиенты (по крайней мере пока) написаны на C#. Служба должна выполнить большую проверку ввода данных, переданных ей, поэтому мне нужно каким-то образом указать неверные данные клиенту. Я много читал о ошибках и исключениях, обертывании исключений в ошибках и о многих противоречивых статьях, которые меня просто путают. Каков правильный способ справиться с этим делом?Ошибки WCF и исключения
Должен ли я вообще избегать исключений и упаковывать сообщение результатов? Должен ли я создать специальный Fault или специальное исключение или просто выбросить ArgumentExceptions, как я бы сделал для функции проверки не WCF?
код я прямо сейчас (под влиянием MSDN) является:
[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;
}
}
И на методе есть [FaultContract (TypeOf (ValidationFault))]. Так это «правильный» способ приблизиться к этому?
Для всех, кто интересуется, здесь [ссылка] (http://msdn.microsoft.com/en-us/library/ff953182 (v = pandp.50) .aspx) для руководства по началу работы с блоком валидации EntLib , – Crackerjack 2012-03-08 23:28:06