我正在使用用户名/密码身份验证编写一个非常简单的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”这一行,但仍然无法回答客户端。
非常感谢帮助
答案 0 :(得分:0)
你需要为wcf打开登录。一旦东西通过你的代码边缘你不能直接调试,但是日志记录会让你进一步解决问题。特别是当你开始使用拦截时。
当你有了这个时,你可以查看日志并弄清楚究竟发生了什么。 如果你仍然无法弄清楚id建议问一个新问题,否则这将被搁置。
你的前端是什么?是银光吗?你说这是超时 - 把时间增加到10分钟之内的傻瓜。是否会立即超时。
连接被中止,是故障代码500吗? 火了提琴手
答案 1 :(得分:0)
我不知道为什么,但是当我切换到wsHttpBinding(来自wsDualHttpBinding)时,这开始工作了。它不像解决方案那样真正解决方案,但这解决了它。
如果其他人正在努力解决这个问题,可能就是这种情况。