Tal*_*ker 6 authentication wcf soapfault wcf-security
我有一个WCF服务配置为通过System.IdentityModel.Selectors.UserNamePasswordValidator类的重写Validate()方法使用自定义UserName验证.
合同的所有方法都使用FaultContractAttribute进行修饰,以将自定义SOAP错误指定为可返回的.
当抛出FaultException <T>时,其中T是FaultContractAttribute中指定的类型,一切都按预期运行,我在响应XML中得到自定义错误.
但是,如果我尝试在用户名认证类的重写Validate()方法中抛出FaultException <T>,我会得到一个泛型SOAP错误,原因如下:
"这个错误的创造者没有指明原因."
但是,如果我更改代码以抛出一般SOAP错误,如:
throw new FaultException("Authentication failed.");
我至少会得到"身份验证失败".在原因元素.
我的问题是:
任何帮助非常感谢.我自己的猜测是,在消息与合同的任何方法相关联之前进行身份验证,因此,与FaultContractAttribute没有关联,但任何确认这一点并给出解决方法的文章都非常有用.
大里
这有点烦人,但我通过这样做解决了这个问题:
SecurityTokenValidationException stve
= new SecurityTokenValidationException("用户名或密码无效");
抛出新的FaultException<SecurityTokenValidationException>(stve, stve.Message);
包含该消息还意味着您不会收到愚蠢的“未指定原因”消息。
| 归档时间: |
|
| 查看次数: |
2345 次 |
| 最近记录: |