WCF服务身份验证。凭据错误时永远不会返回错误

时间:2014-04-30 07:38:39

标签: c# wcf wcf-security

我正在使用用户名/密码身份验证编写一个非常简单的WCF服务。我的用户名/密码验证器代码如下所示:

public class InvoiceServiceUserValidation : UserNamePasswordValidator
{
    public override void Validate(string userName, string password)
    {
        if (string.IsNullOrEmpty(userName) || string.IsNullOrEmpty(password))
        {
            throw new SecurityTokenException("Username and password required");
        }

        if (InvoiceServiceHelper.AuthenticateUser(userName, password)) return;

        throw new FaultException("Could not authenticate - Unknown reason");

    }
}

如果我提供了正确的用户名和密码,一切都很好,操作仍在继续。当我提供错误的密码时,hovever,异常永远不会返回,所以我的客户只是在它超时之前等待。

我已经调试过,所以我知道当出现错误时,实际上已经达到“抛出新的FaultException”这一行,但仍然无法回答客户端。

非常感谢帮助

2 个答案:

答案 0 :(得分:0)

你需要为wcf打开登录。一旦东西通过你的代码边缘你不能直接调试,但是日志记录会让你进一步解决问题。特别是当你开始使用拦截时。

How to turn on WCF tracing?

当你有了这个时,你可以查看日志并弄清楚究竟发生了什么。 如果你仍然无法弄清楚id建议问一个新问题,否则这将被搁置。

你的前端是什么?是银光吗?

你说这是超时 - 把时间增加到10分钟之内的傻瓜。是否会立即超时。

连接被中止,是故障代码500吗? 火了提琴手

答案 1 :(得分:0)

我不知道为什么,但是当我切换到wsHttpBinding(来自wsDualHttpBinding)时,这开始工作了。它不像解决方案那样真正解决方案,但这解决了它。

如果其他人正在努力解决这个问题,可能就是这种情况。