我正在第一次編寫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