WCF DataContract验证

时间:2012-10-01 12:38:54

标签: wcf

我想知道在验证方面是否有任何数据注释可以添加到DataContract中的DataMember中。

假设我们有一个firstname(string)datamember,我们不希望长度超过50个字符。有没有什么方法可以捕获它,或者如果firstname的长度超过50,我们需要实现一个自定义的faultexception来抛出一个excpetion。

我们需要对WCF安全性进行此验证。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

DataContractSerializer没有任何功能允许您通过注释DataMembers以声明方式指定验证。

如果将DataMember定义为属性(而不是字段),则可以在属性设置器中编写代码以在反序列化期间验证数据。代码可以在验证失败时抛出异常或更改数据(例如,在您的名字成员示例中将其截断为50个字符)。

[DataMember]
public string FirstName
{
  get { return ...; }
  set { if (value.Length > 50) throw new MyValidationException(); }
}