从WCF UserNamePasswordValidator正确捕获SecurityTokenException

从WCF UserNamePasswordValidator正确捕获SecurityTokenException,wcf,Wcf,根据UserNamePasswordValidator示例,如果用户名或密码错误,用户应该抛出一个SecurityTokenException。这很好,但是我没有得到SecurityTokenException而是得到了MessageSecurityException,并且我传递的文本消息丢失在了某个地方。我不会发送“故障中的详细信息” 你知道如何正确捕捉这些错误吗?我将自己尝试几件事,看看是否能做得对。快速查找(为什么我以前没有看到…),我在问题中提供的链接指向了 它与第一个示例有所不同,如果

根据UserNamePasswordValidator示例,如果用户名或密码错误,用户应该抛出一个SecurityTokenException。这很好,但是我没有得到SecurityTokenException而是得到了MessageSecurityException,并且我传递的文本消息丢失在了某个地方。我不会发送“故障中的详细信息”

你知道如何正确捕捉这些错误吗?我将自己尝试几件事,看看是否能做得对。

快速查找(为什么我以前没有看到…),我在问题中提供的链接指向了

它与第一个示例有所不同,如果您想提供消息详细信息,它有一个关于使用FaultException而不是SecurityTokenException的注释

public override void Validate(string userName, string password)
{
    if (null == userName || null == password)
    {
        throw new ArgumentNullException();
    }

    if (!(userName == "test1" && password == "1tset") && !(userName == "test2" && password == "2tset"))
    {
        // This throws an informative fault to the client.
        throw new FaultException("Unknown Username or Incorrect Password");
        // When you do not want to throw an infomative fault to the client,
        // throw the following exception.
        // throw new SecurityTokenException("Unknown Username or Incorrect Password");
    }
}
客户端捕获的异常现在包含一个FaultException类型的内部异常,其中包含我要公开的文本消息