Служба WCF выдает ошибку при проверке учетных данных против PrincipalContext? - PullRequest
3 голосов
/ 04 октября 2011

У меня есть служба 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, что не позволило мне войти в систему с любым другим набором учетных данных.

1 Ответ

2 голосов
/ 10 октября 2011

Перезапуск сервера устранил проблему, хотя я все еще хотел бы знать, в чем проблема.

По-моему, из-за чего-то PrincipalContext произошла неправильная утилизация, что не позволяло мне войти в систему с любым другим набором учетных данных.

...