【发布时间】:2009-08-24 14:28:33
【问题描述】:
我有一个 WCF 服务配置为通过 System.IdentityModel.Selectors.UserNamePasswordValidator 类的重写 Validate() 方法使用自定义用户名验证。
合同的所有方法都已使用 FaultContractAttribute 进行修饰,以将自定义 SOAP 错误指定为可返回。
当抛出 FaultException
但是,如果我尝试在用户名身份验证类的重写 Validate() 方法中抛出 FaultException
“此故障的创建者未指定原因。”
但是,如果我更改代码以引发一般 SOAP 错误,如下所示:
throw new FaultException("Authentication failed.");
我至少会得到“身份验证失败”。在原因元素中。
我的问题是:
- 为什么在 Validate() 中抛出的 FaultException
异常与在服务实现中的处理方式不同? - Validate() 方法中抛出的异常是否可以符合合约方法中指定的 FaultContractAttribute?
非常感谢任何帮助。我自己的猜测是,身份验证发生在消息与合同的任何方法关联之前,因此与 FaultContractAttribute 无关,但任何确认这一点并提供解决方法的文章都会非常有用。
大理
【问题讨论】:
-
感谢您发布此问题。有什么解决办法吗?我仍在寻找 2013 年 3 月的答案。
标签: wcf authentication wcf-security soapfault