我有一个 WCF 服务通过我的 web.config 与 UserNamePasswordValidator 连接,没有问题。在我的验证器中,我重写了 Validate,检查凭据并在必要时抛出 FaultException。
例子:
public class CredentialValidator : UserNamePasswordValidator
{
public override void Validate(string userName, string password)
{
if (userName != "dummy")
{
throw new FaultException<AuthenticationFault>(new AuthenticationFault(), "Invalid credentials supplied");
}
}
}
如果我自己在 .NET 应用程序中使用此服务并提供无效凭据,则会引发 MessageSecurityException 并显示以下消息:
“从另一方收到不安全或不正确安全的故障。有关故障代码和详细信息,请参阅内部 FaultException。”
我预期的 FaultException 是 MessageSecurityException 的 InnerException。
有什么方法可以让客户端只收到 FaultException?
MessageSecurityException 并没有特别描述异常的真正原因(对 SO 的快速搜索会产生各种问题,包括服务器/客户端时间同步..),并且由于第三方将使用该服务,我想尽可能清楚。