2

我使用 netTcpBinding 和安全模式="Message" 和 clientCredentialType="UserName" 编写了简单的 WCF 服务。当我传递有效的用户名和密码时,一切正常,会话以我想要的方式建立。但是,当凭据错误时,尽管我无法在 try catch 块中的客户端应用程序中捕获它,但会引发异常。有没有人有同样的问题?这是我的自定义验证器...

public class UserValidator : UserNamePasswordValidator
    {
        static int counter = 0;
        public override void Validate(string userName, string password)
        {
            ++counter;            
            Console.WriteLine(counter.ToString() + " " + DateTime.Now.ToShortTimeString());
            if (userName != "test" || password != "test")

                throw new FaultException("Bad username or password");

                //throw new SecurityTokenException();

        }
    }
4

2 回答 2

1

为什么不抛出安全令牌异常?这就是它的用途。此时还没有发送消息,也没有打开通道,因此您无法返回故障。

于 2009-09-20T21:18:03.320 回答
0

您是否有设置客户端和服务器之间通道的代码?如果是这样,通道是否无法正确创建 - 与消息安全一样,客户端和服务器必须执行 hadnshake,两者都提供其凭据以打开安全通道。这必须在启用任何进一步的通信之前建立,并且传递无效凭据的事实将停止创建我怀疑的通道。

于 2009-06-04T13:17:12.813 回答