Служба WCF выдает ошибку при проверке учетных данных против PrincipalContext?

У меня есть служба 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 ответ

Решение

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

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

Другие вопросы по тегам