получение исключения при использовании объекта DirectoryServices

63
5

Я использую Active Directory для аутентификации пользователя, регистрирующегося на веб-сайте ASP.NET в корпоративной интрасети. Я получаю сообщение об ошибке "handle is invalid" в следующей строке кода:

Dim entry As DirectoryEntry = New DirectoryEntry(path, domainAndUsername, Password)

Вот мой код, который я использую для аутентификации. Dim entry As DirectoryEntry = New DirectoryEntry (путь, имя домена, имя домена, пароль)

    Try
'Bind to the native AdsObject to force authentication.

Dim obj As Object = entry.NativeObject
Dim search As DirectorySearcher = New DirectorySearcher(entry)

search.Filter = "(SAMAccountName=" & Username & ")"
search.PropertiesToLoad.Add("cn")
Dim result As SearchResult = search.FindOne()

If (result Is Nothing) Then
Return False
End If

'Update the new path to the user in the directory.
'_path = result.Path
'_filterAttribute = CType(result.Properties("cn")(0), String)

Catch ex As Exception
Throw New Exception("Error authenticating user. " & ex.Message)
End Try

Как отслеживать это исключение? Visual Studio говорит, что это криптографическое исключение

благодаря

спросил(а) 2021-01-25T15:19:07+03:00 4 месяца, 2 недели назад
1
Решение
62

Предполагая, что вы находитесь на.NET 3.5.... и думая, что код хорошо переводит на VB, вы можете использовать встроенный метод.

public bool isValidUser(string password,string username,string domain)
{
var isValid = false;
using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, domain))
{
isValid = pc.ValidateCredentials(username, password);
}
return isValid;
}

Я знаю, что он не отвечает на вопрос как таковой, но может избежать исключения в первую очередь

ответил(а) 2021-01-25T15:19:07+03:00 4 месяца, 2 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема