Я разрабатываю сайт интрасети asp.net с ActiveDirectoryMembershipProvider и SqlProfileProvider.
Одним из требований моего веб-сайта является наличие страницы «Дни рождения», которая потребовала бы от меня перечисления всех профилей и получения информации о дне рождения.
Я подошел к проблеме следующим образом:
- Вызвать статический метод Membership.GetAllUsers ();
- Перебирайте список пользователей и извлекайте профиль из имени пользователя участника
Однако этот подход не удался по следующим причинам:
- Веб-приложение олицетворяет текущего зарегистрированного пользователя, чтобы получить его данные AD (identity impersonate = "true" в web.config), поэтому я получаю исключение "доступ запрещен" при попытке вызвать GetAllUsers
- Если я попытаюсь сделать веб-приложение имитирующим учетную запись суперпользователя, AD возвращает имена пользователей в формате username @ domain-name, но в моем провайдере профиля они изначально были сохранены в формате domain-name \ username.
Итак, как бы вы обошли эту проблему, чтобы получить полный список профилей для любого члена организации?