English 中文(简体)
WCF 验证故障
原标题:
  • 时间:2009-01-16 22:02:09
  •  标签:

我正在使用验证应用程序块-企业库来验证发送到我的WCF服务操作的参数。例如,某个操作要求参数为1或6,如下:

[OperationContract(Name="GetEmployeesByRegion")]
[FaultContract(typeof(ValidationFault))]
List<Employees> GetEmployeesByRegion([DomainValidator(1,6)]int regionId);

这个功能很好,即使验证错误发生,但是当客户端调用服务时,会抛出一个通用的System.ServiceModel.FaultException异常。并且消息表明:「此故障的创建者未指定原因。」

现在,我可以在服务调用之前自己检查参数并抛出自定义故障,但似乎这违背了使用验证应用程序块进行基于属性的参数验证的目的。是否有任何方法可以自定义验证故障返回的错误信息?我也有可能完全做错了什么。我只想让调用者知道,在异常消息中应该传递1或6。这是可能的吗?

问题回答

实际上,在故障中有一个收藏品,其中包含您正在寻找的所有消息:

foreach (ValidationDetail detail in fault.Detail.Details)
{
   ...
}

所以这很古老,但我遇到了同样的问题,并找到了答案。

对我来说问题是我在创建客户端服务引用之后才添加了[ValidationBehavior]和[FaultContract)]属性。为了使其工作,我必须刷新引用。

其他可能需要检查的事项:

1)这是一个在Enterprise Library 6中修复的错误。我不确定这个问题,但发现了一些有关EntLib解决类似问题的代码修复的提及。确保你使用的是最新版本的EntLib。

你正在使用ErrorMessage参数作为你的验证错误信息,应使用MessageTemplate。





相关问题
热门标签