我正在第一次编写WCF服务。该服务及其所有客户(至少现在)都是用C#编写的。该服务必须对所传递的数据进行大量输入验证,因此我需要一些方法将无效数据返回给客户端。我一直在阅读很多有关错误和异常的内容,包括错误中的例外情况,以及许多相互冲突的文章,这些文章只是让我更加困惑。什么是处理这种情况的正确方法?WCF故障和异常
我应该完全避免异常并打包结果返回消息吗?我应该创建一个特殊的Fault还是一个特殊的Exception,或者像我为非WCF验证函数一样抛出ArgumentExceptions?
我已经把现在(由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