我是第一次写WCF服务.该服务及其所有客户端(至少目前为止)都是用C#编写的.该服务必须对传递的数据进行大量输入验证,因此我需要有一些方法将无效数据指示回客户端.我一直在阅读很多关于错误和异常,包含错误中的异常,以及许多相互矛盾的文章.处理这种情况的正确方法是什么?
我应该完全避免异常并打包结果返回消息吗?我应该创建一个特殊的错误,或一个特殊的异常,或者只是像非WCF验证函数一样抛出ArgumentExceptions?
我现在的代码(受MSDN影响)是:
[DataContract] public class ValidationFault { [DataMember] public DictionaryErrors { 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 {{argument, error}}; Fatal = fatal; } public void AddError(string argument, string error, bool fatal) { Errors.Add(argument, error); Fatal |= fatal; } }
在方法上有[FaultContract(typeof(ValidationFault))].这是解决这个问题的"正确"方法吗?