Помощь! Я пытался написать функцию, которая будет подтверждать членство пользователя в группе Active Directory, и, хотя он работает, если член входит в группу, он выдает исключение, если пользователь не входит.
Вот функция:
private bool IsUserMemberOfGroup(string user, string group)
{
using (var ctx = new PrincipalContext(ContextType.Domain))
using (var groupPrincipal = GroupPrincipal.FindByIdentity(ctx, group))
using (var userPrincipal = UserPrincipal.FindByIdentity(ctx, user))
{
if (groupPrincipal == null)
{
return false;
}
else
{
return userPrincipal.IsMemberOf(groupPrincipal);
}
}
}
А вот YSOD:
Ошибка сервера в приложении '/'.
Неизвестная ошибка (0x80005000)
Описание: Произошло необработанное исключение во время выполнения текущего веб-запроса. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.
Сведения об исключении:
System.Runtime.InteropServices.COMException: неизвестная ошибка (0x80005000)
Ошибка источника:
Line 34: else
Line 35: {
Line 36: return userPrincipal.IsMemberOf(groupPrincipal);
Line 37: }
Line 38: }
Я не знаю, связано ли это, но когда я перехожу через функцию, groupPrincipal.Members.Count генерирует исключение типа «System.NullReferenceException», а Count.Base показывает исключение с сообщением «Ссылка на объект не установить экземпляр объекта ".
Что, черт возьми, происходит? Почему бул по имени IsMemberOf просто не возвращает false, если кто-то не является участником?
Спасибо
Daniel