Я пытаюсь получить пользователя AD для веб-приложения для интрасети на основе имени, указанного в этом коде:
var userName = User.Identity.Name.Split('\\')[1];
, который возвращает DOMAIN \\ USER и разрезает его, чтобы я мог получитьпросто 'USER'.
Затем я передаю это в этот метод:
public bool DoesUserExist(string userName)
{
using (var domainContext = new PrincipalContext(ContextType.Domain, Domain))
{
using (var foundUser = UserPrincipal.FindByIdentity(domainContext, IdentityType.SamAccountName, userName))
{
return foundUser != null;
}
}
}
Запустив это на моем компьютере разработчика или опубликовав вживую, он всегда возвращает false.
Однако, если я делаю это:
var domainUser = UserPrincipal.Current;
Правильно извлекает пользователя (в данном случае меня), и когда я сравниваю SamAccountName и имя, которое я передаю в методе, они совпадают.Проблема с использованием этого заключается в том, что когда сайт публикуется в режиме реального времени, он получает только имя входа в пул приложений IIS, тогда как User.Identity.Name выбирает учетную запись пользователя на сайте.
I 'мы пытались передать имя без ограничения, и это тоже не сработало.
У меня заканчиваются идеи;Кто-нибудь знает, если я что-то пропустил здесь или есть какие-либо предложения, которые могут решить эту проблему?