我想要一些帮助。
如果给定的实体数据没有通过业务逻辑,我想从我的WCF服务返回某种验证异常,但我不确定从WCF服务返回多个东西的最佳方法(例如验证错误和实体列表。)
这个可能很简单,但即便如此,我也会感激一点帮助。
答案 0 :(得分:2)
我建议您查看企业库验证块:
http://msdn.microsoft.com/en-us/library/ff648951.aspx
http://msdn.microsoft.com/en-us/library/ff648939.aspx(注意这是针对EntLib 3.1,有点过时了,但即使在EntLib 5中,WCF集成的工作方式也相似)
我已经多次使用这种方法进行WCF验证,但效果很好。您最终将使用属于EntLib的验证属性来装饰您的数据协定。这定义了您的验证规则。然后,将服务配置为使用Enterprise Library的WCF可扩展性。这是一种端点行为,因此基本上这会拦截您的服务的任何传入消息,检查所有已定义的验证属性是否通过,然后将消息发送到您的服务选项。如果验证属性指定的规则未通过,则端点行为将返回包含有关所有验证失败的详细信息的错误消息。因此,如果一个属性没有通过,则会有一条消息。如果三个属性没有通过,则会有三条消息,依此类推。每个验证失败消息都引用了哪些属性未通过验证。关于EntLib验证WCF集成的好处是,用于验证失败的错误消息是强类型的,并且在服务的WSDL中可用。这意味着您的客户可以轻松消费这些故障并对其采取适当的行动。
如果您认为Enterprise Library对您的需求有点太重,那么您当然可以进行自己的验证。您可能希望服务操作返回的数据合同包含类似于包含验证消息的List。