【问题标题】:How to catch exception from UserNamePasswordValidator in WCF client application?如何从 WCF 客户端应用程序中的 UserNamePasswordValidator 捕获异常?
【发布时间】:2010-10-29 06:14:42
【问题描述】:

我使用 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();

        }
    }

【问题讨论】:

    标签: wcf wcf-binding wcf-security


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2018-06-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多