Линк к объявлению, исключение исключенного контекста сработало - PullRequest
0 голосов
/ 18 января 2011

У меня есть исключение, которое срабатывает, когда я тестирую мой код с использованием библиотеки Linq to AD .

Я использую репозиторий с этой функцией:

 public UserAD GetUser(string username) 
        {
            UserAD user = null;
            using (Root = CreateDirectoryEntry())
            {
                var users = new DirectorySource<UserAD>(Root, SearchScope.Subtree);

                user = users.Where(x => x.AccountName == username)
                    .AsEnumerable()
                    .SingleOrDefault();             //not supported in LDAP; alternative in-memory SingleOrDefault

            }
            return user;
        }

Это прекрасно работает, когда я вызываю его напрямую:

[TestMethod]
        public void RepositoryUtenteAD_GetUser()
        {
            UserAD user = repositoryAD.GetUser("TestAD_OK");

            Assert.AreEqual("blablabla", user.DistinguishedName);

            Assert.IsFalse(user.AccountDisabled);
        }

Но я могу использовать другой метод, который вызовет GetUser:

[TestMethod]
        public void RepositoryUtenteAD_AutenticazioneUtente_Authentication()
        {
            IAutenticazione auth = repositoryAD.AutenticazioneUtente("TestAD_OK", "TestAD_OK");
            Assert.IsTrue(auth.IsAuthenticated);
        }

, и метод аутентификации выглядит следующим образом (очищено от смысла и деталей, ошибка осталась там):

public IAutenticazione AutenticazioneUtente(string username, string password)
        {
            bool IsWhyNotAuthentifiedFound = false;
            IAutenticazione authenticazione = new Autenticazione();

            UserAD user = GetUser(username);
            return authenticazione;
}

Тест работает нормально, assert дает мне правильное значение, но после очистки моего теста у меня возникло исключение отсоединенного контекста.Я предполагаю, что это происходит из библиотеки Interop.Adsi, которую я использую.

В GetUser (имя пользователя) Должен ли я скопировать все, что есть в моем UserAD, чтобы сделать клон и, таким образом, очистить его от контекста ...?Или есть более умный способ приблизиться?

Спасибо за ваше чтение!

1 Ответ

0 голосов
/ 18 января 2011

Нашел решение, даже если оно странное.Ошибка возникает только при запуске теста в режиме отладки, если я выберу запустить вместо отладки, все хорошо.Спасибо за ваше чтение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...