在针对PrincipalContext验证凭据时,WCF服务是否会引发错误?

时间:2011-10-04 19:53:31

标签: c# silverlight wcf login principal

我有一个WCF服务,如果我使用一个登录,它可以工作,但如果我尝试使用任何其他登录登录,则会引发以下错误。奇怪的是,如果我将密码更改为工作登录,则新密码不起作用,但旧密码仍然有效。它几乎就像是在缓存一些东西。

我得到的错误是:

  

同一用户与服务器或共享资源的多个连接,   不允许使用多个用户名。断开所有连接   先前与服务器或共享资源的连接,然后重试

导致错误的代码是:

public UserModel Login(string username, string password)
{
    if (username == null || password == null)
        return null;

    using (var pContext = new PrincipalContext(ContextType.Machine))
    { 
        if (pContext.ValidateCredentials(username, password))
        {
            using (var context = new MyEntities())
            {
                // I can tell from a SQL trace that this piece never gets hit
                var user = (from u in context.Users
                            where u.LoginName.ToUpper() == username.ToUpper()
                                  && u.IsActive == true
                            select u).FirstOrDefault();

                if (user == null)
                    return null;

                var userModel = Mapper.Map<User, UserModel>(user);
                userModel.Token = Guid.NewGuid();
                userModel.LastActivity = DateTime.Now;

                authenticatedUsers.Add(userModel);
                sessionTimer.Start();

                return userModel;
            }
        }
    }

    return null;
}

我看到一个相关的问题here,这表明问题出在PrincipalContext,但没有回答

更新

让它工作.....我重新启动了我们的生产服务器,因为我们需要在接下来的一个小时内为重要的人工作,并且我认为,因为之前的链接建议重启将获得一次登录我只需要重新启动并使用登录进行登录以使其现在正常工作,并且在重新启动后一切都完美无缺。我昨天大部分时间都待在一起,迟到了,今天早上所有人都试图解决这个问题。我们不应该重新启动我们的网络服务器,但重要的是要让它工作,所以无论如何我都做了,现在一切都按照应有的方式工作。

我仍然想知道它的问题是什么。我最好的猜测是,某些因素导致PrincipalContext无法正确处理,导致我无法使用任何其他凭据登录。

1 个答案:

答案 0 :(得分:2)

重新启动服务器修复了这个问题,虽然我仍然想知道问题是什么。

我最好的猜测是,某些内容导致PrincipalContext无法正确处置,导致我无法使用任何其他凭据登录。