3

我有一个 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;
}

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

更新

得到它的工作......我重新启动了我们的生产服务器,因为我们需要在接下来的一个小时内让这个重要的人工作,我认为因为它之前的链接表明重新启动将获得一次登录,我只会重新启动并使用登录所需的登录名让它现在工作,重新启动后一切工作绝对完美。我昨天大部分时间都在熬夜,今天早上的所有时间都在试图解决这个问题。我们不应该重新启动我们的网络服务器,但是让它工作很重要,所以我还是做了,现在一切都按照它应该的方式工作。

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

4

1 回答 1

2

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

我最好的猜测是某些原因导致PrincipalContext无法正确处理,这使我无法使用任何其他凭据集登录。

于 2011-10-10T18:30:00.420 回答